Function at 0x478190
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x70
mov eax, dword [0x597010]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov ecx, dword [0x59d954]
test ecx, ecx
jne 0x478b10
mov dword [ebp - 0x6c], ecx
push 0x28
call fcn.005283f4
add esp, 4
mov esi, eax
mov dword [eax], 0
mov dword [eax + 4], 0
mov byte [eax + 8], 0
push 0xc
call fcn.005283f4
add esp, 4
mov dword [esi + 0xc], eax
lea ecx, [eax + 0xc]
mov dword [esi + 0x14], ecx
test eax, eax
je 0x478ba1
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [eax + 8], 0
mov dword [esi + 0x10], ecx
lea ebx, [esi + 0x1c]
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x18], ebx
mov dword [esi + 0x24], 1
mov dword [ebp - 0x50], esi
mov dword [0x59d954], esi
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
test eax, eax
je 0x478ba4
mov edi, eax
push eax
call fcn.00542c14
add esp, 4
lea ecx, [ebp - 0x1c]
push 3
push eax
push edi
push ecx
call fcn.00458990
add esp, 0x10
mov eax, dword [ebp - 0x18]
test eax, eax
mov ecx, dword [ebp - 0x6c]
je 0x478b10
mov edi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x50]
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov dword [ebp - 0x44], 0
push 0x800
push 0
push str.api_ms_win_downlevel_shell32_l1_1_0.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
mov dword [ebp - 0x78], eax
je 0x4782aa
push 0x5821b4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4782ba
mov ecx, eax
call dword [section..00cfg]
lea eax, [ebp - 0x44]
push eax
push edi
call ecx
jmp 0x4782b5
lea eax, [ebp - 0x44]
push eax
push edi
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x68], eax
jmp 0x4782c1
mov dword [ebp - 0x68], 0
mov edi, dword [ebp - 0x44]
test edi, edi
mov dword [ebp - 0x60], ebx
je 0x478316
shl edi, 2
cmp edi, 0x55555555
jae 0x478a9c
lea eax, [edi + edi*2]
xor esi, esi
push eax
call fcn.005283f4
add esp, 4
mov dword [ebp - 0x5c], eax
mov ecx, eax
nop dword [eax]
test ecx, ecx
je 0x478b86
mov ebx, ecx
mov eax, dword [ebp - 0x68]
push dword [eax + esi]
call fcn.0042d4b2
mov ecx, ebx
add ecx, 0xc
add esi, 4
cmp edi, esi
jne 0x4782f0
mov dword [ebp - 0x64], ecx
jmp 0x478324
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x5c], 0
push 0xc
call fcn.005283f4
add esp, 4
test eax, eax
je 0x478ba7
mov edi, eax
mov ebx, dword [ebp - 0x50]
lea eax, [ebx + 0xc]
mov ecx, ebx
add ecx, 0x18
mov edx, edi
add edx, 0xc
mov dword [edi + 4], 0
mov dword [edi], 0
mov dword [edi + 8], 0
mov dword [ebp - 0x70], eax
mov esi, dword [eax]
test esi, esi
je 0x4783b6
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebx + 0x10]
mov ecx, esi
cmp eax, esi
jne 0x478386
jmp 0x4783a1
mov eax, ebx
cmp ebx, esi
je 0x47839c
lea ebx, [eax - 0xc]
cmp byte [eax - 1], 0
jns 0x478380
push dword [eax - 0xc]
call fcn.00528424
add esp, 4
jmp 0x478380
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
mov ebx, dword [ebp - 0x50]
mov dword [ebx + 0x10], esi
push ecx
call fcn.00528424
add esp, 4
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x54]
mov dword [ebx + 0xc], edi
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x14], edx
push dword [ebx + 0x1c]
call fcn.0047ae30
mov dword [ebx + 0x20], 0
mov eax, dword [ebp - 0x60]
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x24], 1
mov edx, dword [ebp - 0x5c]
cmp edx, dword [ebp - 0x64]
mov edi, ebx
je 0x478408
movzx eax, byte [edx + 0xb]
test al, al
jns 0x4783fc
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax]
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x1c]
push eax
push edx
call fcn.00474ed0
jmp 0x47841d
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], 0
mov ecx, edi
lea eax, [ebp - 0x1c]
push eax
call fcn.00477a70
cmp byte [ebp - 0x11], 0
jns 0x478439
push dword [ebp - 0x1c]
call fcn.00528424
add esp, 4
mov eax, dword [ebp - 0x64]
sub eax, dword [ebp - 0x5c]
sar eax, 2
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x74], eax
cmp eax, 2
jb 0x478ad2
lea edx, [ebp - 0x1c]
cmp edx, 0x5821e8
seta al
lea ecx, [ebp - 0x18]
cmp ecx, 0x5821e8
setbe cl
or cl, al
mov byte [ebp - 0x56], cl
cmp edx, 0x582208
seta al
lea ecx, [ebp - 0x1a]
cmp ecx, 0x582208
setbe ah
or ah, al
mov byte [ebp - 0x55], ah
cmp edx, 0x58220c
seta al
cmp ecx, 0x58220c
setbe cl
mov edx, dword [edi + 4]
mov dword [ebp - 0x7c], edx
or cl, al
mov byte [ebp - 0x45], cl
dec dword [ebp - 0x74]
mov eax, dword [ebp - 0x5c]
lea ebx, [eax + 0xc]
mov al, 1
mov dword [ebp - 0x54], eax
jmp 0x4784e1
push dword [ebp - 0x34]
call fcn.00528424
add esp, 4
cmp byte [ebp - 0x1d], 0
js 0x4789cc
add ebx, 0xc
dec dword [ebp - 0x74]
je 0x478ad2
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x20], 0xffffffff
cmp byte [ebx + 0xb], 0
mov dword [ebp - 0x60], ebx
js 0x478510
mov eax, dword [ebx + 8]
mov dword [ebp - 0x20], eax
movsd xmm0, qword [ebx]
movsd qword [ebp - 0x28], xmm0
jmp 0x47857c
mov esi, dword [ebx]
mov ebx, dword [ebx + 4]
cmp ebx, 4
ja 0x478526
mov byte [ebp - 0x1d], bl
lea eax, [ebp - 0x28]
cmp eax, esi
jbe 0x47855d
jmp 0x47856b
cmp ebx, 0x7ffffff0
jae 0x478a9c
mov edi, ebx
or edi, 7
inc edi
js 0x478aa1
lea eax, [edi + edi]
push eax
call fcn.005283f4
add esp, 4
mov dword [ebp - 0x28], eax
or edi, 0x80000000
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], ebx
cmp eax, esi
ja 0x47856b
lea ecx, [eax + ebx*2]
add ecx, 2
cmp ecx, esi
ja 0x478b98
inc ebx
add ebx, ebx
push ebx
push esi
push eax
call fcn.0052bc90
add esp, 0xc
mov ebx, dword [ebp - 0x60]
movzx eax, byte [ebp - 0x1d]
lea ecx, [ebp - 0x28]
test al, al
jns 0x47858d
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
push 3
push eax
push ecx
lea eax, [ebp - 0x34]
push eax
call fcn.00458990
add esp, 0x10
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x4785af
test edx, edx
je 0x478b89
cmp ecx, 0x7ffffff0
jae 0x478a9c
cmp ecx, 4
ja 0x4785d0
mov byte [ebp - 0x11], cl
lea edi, [ebp - 0x1c]
cmp edi, edx
jbe 0x47860a
jmp 0x478615
mov dword [ebp - 0x4c], edx
mov ebx, ecx
or ebx, 7
inc ebx
js 0x478aa1
mov esi, ecx
lea eax, [ebx + ebx]
push eax
call fcn.005283f4
add esp, 4
mov edi, eax
mov dword [ebp - 0x1c], eax
or ebx, 0x80000000
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], esi
mov ebx, dword [ebp - 0x60]
mov ecx, esi
mov edx, dword [ebp - 0x4c]
cmp edi, edx
ja 0x478615
lea eax, [edi + ecx*2]
cmp eax, edx
ja 0x478b8c
lea eax, [ecx + ecx]
push eax
push edx
push edi
mov esi, ecx
call fcn.0052bc90
add esp, 0xc
mov word [edi + esi*2], 0
cmp byte [ebp - 0x1d], 0
jns 0x47863c
push dword [ebp - 0x28]
call fcn.00528424
add esp, 4
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x20], eax
movsd xmm0, qword [ebp - 0x1c]
movsd qword [ebp - 0x28], xmm0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x38], 0
movzx eax, byte [ebp - 0x1d]
test al, al
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
movzx edi, al
mov dword [ebp - 0x4c], edi
cmovs edi, ecx
lea edx, [ebp - 0x28]
cmovs edx, esi
test edi, edi
je 0x47869d
test edx, edx
je 0x478b8f
cmp edi, 2
jne 0x4786c0
cmp word [edx], 0x2d
jne 0x4786c0
test al, al
lea edx, [ebp - 0x28]
cmovs edx, esi
cmp word [edx + 2], 0x2d
je 0x4788a0
nop dword [eax + eax]
test byte [ebp - 0x54], 1
je 0x4788a0
lea ecx, [ebp - 0x28]
lea edx, [ebp - 0x34]
lea eax, [ebp - 0x40]
push eax
call fcn.00479b40
add esp, 4
test al, al
je 0x4788b0
cmp dword [ebp - 0x7c], 0
je 0x478a0e
movzx eax, byte [ebp - 0x29]
mov ecx, dword [ebp - 0x34]
lea edi, [ebp - 0x34]
mov ebx, eax
test al, al
jns 0x478703
mov ebx, dword [ebp - 0x30]
mov edi, ecx
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0x2ffffff
cmp byte [ebp - 0x56], 0
je 0x478b9e
mov dword [ebp - 0x1c], 0x2d002d
mov word [ebp - 0x18], 0
cmp ebx, 2
jb 0x47874e
cmp word [edi], 0x2d
jne 0x47874e
test al, al
lea eax, [ebp - 0x34]
cmovns ecx, eax
mov esi, 2
cmp word [ecx + 2], 0x2d
je 0x4787b5
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0x1ffffff
cmp byte [ebp - 0x55], 0
je 0x478b9e
mov word [ebp - 0x1c], 0x2d
test ebx, ebx
je 0x4789ef
mov esi, 1
cmp word [edi], 0x2d
je 0x4787b5
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0x1ffffff
cmp byte [ebp - 0x45], 0
je 0x478b9e
mov word [ebp - 0x1c], 0x2f
cmp word [edi], 0x2f
jne 0x478a0e
cmp ebx, esi
je 0x478a0e
push 0
push 1
push 0x582160
push ebx
push edi
call fcn.004683e0
add esp, 0x14
sub ebx, esi
jb 0x478baa
sub eax, esi
cmp ebx, eax
cmovb eax, ebx
cmp eax, 0xf
jne 0x478a0e
cmp word [edi + esi*2], 0x73
jne 0x478a0e
cmp word [edi + esi*2 + 2], 0x69
jne 0x478a0e
cmp word [edi + esi*2 + 4], 0x6e
jne 0x478a0e
cmp word [edi + esi*2 + 6], 0x67
jne 0x478a0e
cmp word [edi + esi*2 + 8], 0x6c
jne 0x478a0e
cmp word [edi + esi*2 + 0xa], 0x65
jne 0x478a0e
cmp word [edi + esi*2 + 0xc], 0x2d
jne 0x478a0e
cmp word [edi + esi*2 + 0xe], 0x61
jne 0x478a0e
cmp word [edi + esi*2 + 0x10], 0x72
jne 0x478a0e
cmp word [edi + esi*2 + 0x12], 0x67
jne 0x478a0e
cmp word [edi + esi*2 + 0x14], 0x75
jne 0x478a0e
cmp word [edi + esi*2 + 0x16], 0x6d
jne 0x478a0e
cmp word [edi + esi*2 + 0x18], 0x65
jne 0x478a0e
cmp word [edi + esi*2 + 0x1a], 0x6e
jne 0x478a0e
cmp word [edi + esi*2 + 0x1c], 0x74
jne 0x478a0e
jmp 0x478aa6
mov dword [ebp - 0x54], 0
jmp 0x4788c5
movzx eax, byte [ebp - 0x1d]
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
movzx edx, al
mov dword [ebp - 0x4c], edx
mov dl, 1
mov dword [ebp - 0x54], edx
test al, al
lea eax, [ebp - 0x28]
cmovns esi, eax
mov eax, dword [ebp - 0x4c]
cmovs eax, ecx
mov ecx, eax
test esi, esi
jne 0x4788e1
test ecx, ecx
jne 0x478b92
cmp ecx, 0x7ffffff0
jae 0x478a9c
cmp ecx, 4
ja 0x478900
mov byte [ebp - 0x11], cl
lea edi, [ebp - 0x1c]
cmp edi, esi
jbe 0x47893a
jmp 0x478945
mov dword [ebp - 0x4c], esi
mov ebx, ecx
or ebx, 7
inc ebx
js 0x478aa1
mov esi, ecx
lea eax, [ebx + ebx]
push eax
call fcn.005283f4
add esp, 4
mov edi, eax
mov dword [ebp - 0x1c], eax
or ebx, 0x80000000
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], esi
mov ebx, dword [ebp - 0x60]
mov ecx, esi
mov esi, dword [ebp - 0x4c]
cmp edi, esi
ja 0x478945
lea eax, [edi + ecx*2]
cmp eax, esi
ja 0x478b95
lea eax, [ecx + ecx]
push eax
push esi
push edi
mov esi, ecx
call fcn.0052bc90
add esp, 0xc
mov word [edi + esi*2], 0
mov edi, dword [ebp - 0x50]
mov eax, dword [edi + 0x10]
cmp eax, dword [edi + 0x14]
jae 0x4789a0
test eax, eax
je 0x478b9b
mov ecx, dword [ebp - 0x14]
mov dword [eax + 8], ecx
movsd xmm0, qword [ebp - 0x1c]
movsd qword [eax], xmm0
add eax, 0xc
mov dword [edi + 0x10], eax
cmp byte [ebp - 0x35], 0
jns 0x4789b8
push dword [ebp - 0x40]
call fcn.00528424
add esp, 4
cmp byte [ebp - 0x29], 0
jns 0x4789c2
jmp 0x4784c0
mov ecx, dword [ebp - 0x70]
lea eax, [ebp - 0x1c]
push eax
call fcn.0047aaf0
cmp byte [ebp - 0x11], 0
js 0x4789dc
cmp byte [ebp - 0x35], 0
js 0x478989
cmp byte [ebp - 0x29], 0
js 0x4784c0
cmp byte [ebp - 0x1d], 0
jns 0x4784d5
push dword [ebp - 0x28]
call fcn.00528424
add esp, 4
jmp 0x4784d5
push dword [ebp - 0x1c]
call fcn.00528424
add esp, 4
cmp byte [ebp - 0x35], 0
jns 0x4789b8
jmp 0x478989
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0x1ffffff
cmp byte [ebp - 0x45], 0
je 0x478b9e
movzx ebx, byte [ebp - 0x35]
lea eax, [ebp - 0x40]
test bl, bl
jns 0x478a1f
mov eax, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x3c]
mov dword [ebp - 0x4c], eax
movzx eax, byte [ebp - 0x29]
lea ecx, [ebp - 0x34]
test al, al
mov edi, dword [ebp - 0x50]
jns 0x478a36
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], 0
lea esi, [ebp - 0x1c]
push esi
push eax
push ecx
call fcn.004648a0
add esp, 0xc
movzx eax, byte [ebp - 0x11]
test al, al
jns 0x478a67
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, edi
push ebx
push dword [ebp - 0x4c]
push eax
push esi
call fcn.00478f30
cmp byte [ebp - 0x11], 0
jns 0x478a85
push dword [ebp - 0x1c]
call fcn.00528424
add esp, 4
mov al, 1
mov dword [ebp - 0x54], eax
mov ebx, dword [ebp - 0x60]
cmp byte [ebp - 0x35], 0
jns 0x4789b8
jmp 0x478989
call fcn.0053bf0b
call fcn.0042d55a
lea edx, [ebp - 0x34]
mov ecx, dword [ebp - 0x50]
call fcn.00479e00
cmp byte [ebp - 0x35], 0
js 0x478b4c
cmp byte [ebp - 0x29], 0
js 0x478b61
cmp byte [ebp - 0x1d], 0
js 0x478b76
mov edi, dword [ebp - 0x50]
mov dword [edi], 0
mov dword [edi + 4], 0
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x478af6
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edi, dword [ebp - 0x5c]
test edi, edi
je 0x478b0d
mov eax, dword [ebp - 0x64]
cmp edi, eax
jne 0x478b36
push edi
call fcn.00528424
add esp, 4
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
sete bl
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00528e13
mov eax, ebx
add esp, 0x70
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, esi
cmp esi, edi
je 0x478b04
lea esi, [eax - 0xc]
cmp byte [eax - 1], 0
jns 0x478b30
push dword [eax - 0xc]
call fcn.00528424
add esp, 4
jmp 0x478b30
push dword [ebp - 0x40]
call fcn.00528424
add esp, 4
cmp byte [ebp - 0x29], 0
jns 0x478ac5
push dword [ebp - 0x34]
call fcn.00528424
add esp, 4
cmp byte [ebp - 0x1d], 0
jns 0x478acf
push dword [ebp - 0x28]
call fcn.00528424
add esp, 4
jmp 0x478acf
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3