Function at 0x556150
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x60
mov edi, ecx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [0x64a040]
xor edx, ebp
mov dword [ebp - 0x10], edx
lea esi, [ebp - 0x1c]
push 3
push 0x19
push 0x635774
push ecx
push eax
push esi
call fcn.00540fd0
add esp, 0x18
mov eax, dword [esi + 4]
test eax, eax
je 0x55645a
mov esi, dword [ebp - 0x1c]
mov dword [edi], esi
mov dword [ebp - 0x50], edi
mov dword [edi + 4], eax
xor eax, eax
mov dword [ebp - 0x44], eax
push 0x800
mov dword [ebp - 0x5c], 0
push eax
push 0x635e68
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
mov dword [ebp - 0x68], eax
je 0x556961
push 0x635eb8
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x5561e3
mov ecx, eax
call dword [0x6445dc]
lea eax, [ebp - 0x44]
push eax
push esi
call ecx
mov dword [ebp - 0x5c], eax
mov ebx, dword [ebp - 0x44]
test ebx, ebx
je 0x55692e
cmp ebx, 0x15555556
jae 0x55693c
shl ebx, 2
lea eax, [ebx + ebx*2]
push eax
call fcn.0057dc30
add esp, 4
mov edi, eax
xor ecx, ecx
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x60], ebx
jmp 0x556240
test ecx, ecx
je 0x55622a
add ecx, ecx
push ecx
push esi
push eax
mov esi, edx
call fcn.005822f0
mov edx, esi
add esp, 0xc
mov word [edx], 0
add edi, 0xc
mov ecx, dword [ebp - 0x4c]
add ecx, 4
cmp ebx, ecx
je 0x5562c6
test edi, edi
je 0x556897
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], ecx
mov esi, dword [eax + ecx]
test esi, esi
je 0x55689a
push esi
call fcn.0057f442
add esp, 4
cmp eax, 0x7ffffff8
jae 0x55689d
mov ecx, eax
cmp eax, 4
jbe 0x5562bf
mov dword [ebp - 0x64], esi
mov ebx, ecx
or ebx, 3
inc ebx
js 0x5568be
mov esi, ecx
lea eax, [ebx + ebx]
push eax
call fcn.0057dc30
add esp, 4
mov dword [edi], eax
or ebx, 0x80000000
mov dword [edi + 8], ebx
mov dword [edi + 4], esi
mov ebx, dword [ebp - 0x60]
mov ecx, esi
mov esi, dword [ebp - 0x64]
lea edx, [eax + ecx*2]
cmp eax, esi
ja 0x556215
cmp edx, esi
jbe 0x556215
jmp 0x5568cd
mov byte [edi + 0xb], cl
mov eax, edi
jmp 0x5562a7
mov ebx, edi
push 0xc
call fcn.0057dc30
add esp, 4
test eax, eax
je 0x55693f
xorps xmm0, xmm0
movsd qword [eax], xmm0
mov dword [eax + 8], 0
mov esi, dword [ebp - 0x50]
mov edi, dword [esi + 0xc]
test edi, edi
mov dword [ebp - 0x58], ebx
je 0x55633d
mov dword [ebp - 0x4c], eax
mov ebx, dword [esi + 0x10]
mov eax, edi
cmp ebx, edi
je 0x55632b
add ebx, 0xfffffff4
test ebx, ebx
je 0x55692b
cmp byte [ebx + 0xb], 0
jns 0x55631c
push dword [ebx]
call fcn.0057dc2b
add esp, 4
lea eax, [ebx - 0xc]
cmp ebx, edi
mov ebx, eax
jne 0x556304
mov esi, dword [ebp - 0x50]
mov eax, dword [esi + 0xc]
mov dword [esi + 0x10], edi
push eax
call fcn.0057dc2b
add esp, 4
mov ebx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x4c]
mov ecx, eax
add ecx, 0xc
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], ecx
lea ecx, [esi + 0x18]
lea edi, [esi + 0x1c]
push dword [esi + 0x1c]
call fcn.0052e810
xor eax, eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], eax
mov dword [esi + 0x24], 1
mov ecx, dword [ebp - 0x54]
cmp ecx, ebx
je 0x55694e
movsx eax, byte [ecx + 0xb]
mov edx, ecx
test eax, eax
lea edi, [ebp - 0x1c]
jns 0x556390
mov eax, dword [ecx + 4]
test eax, eax
js 0x556942
mov edx, dword [ecx]
test edx, edx
jne 0x55639c
test eax, eax
jne 0x55695e
lea ecx, [ebp - 0x1c]
push eax
push edx
call fcn.0056adc0
mov ecx, esi
push edi
call fcn.00416100
cmp byte [ebp - 0x11], 0
jns 0x5563bf
push dword [ebp - 0x1c]
call fcn.0057dc2b
add esp, 4
mov eax, dword [ebp - 0x58]
cmp dword [ebp - 0x54], eax
je 0x556401
mov eax, dword [ebp - 0x58]
sub eax, dword [ebp - 0x54]
cmp eax, 0xc
jl 0x556945
sar eax, 2
imul eax, eax, 0xaaaaaaab
dec eax
je 0x556401
mov ecx, dword [ebp - 0x54]
lea edx, [ecx + 0xc]
mov esi, dword [esi + 4]
mov dword [ebp - 0x6c], esi
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
add eax, 0xc
mov dword [ebp - 0x60], eax
mov bl, 1
jmp 0x5564e8
xor eax, eax
mov dword [esi], eax
mov dword [esi + 4], eax
push dword [ebp - 0x5c]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x55641f
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [ebp - 0x54]
test esi, esi
mov edi, dword [ebp - 0x58]
je 0x55645a
cmp esi, edi
je 0x556451
add edi, 0xfffffff4
test edi, edi
je 0x5568f9
cmp byte [edi + 0xb], 0
jns 0x556448
push dword [edi]
call fcn.0057dc2b
add esp, 4
lea eax, [edi - 0xc]
cmp edi, esi
mov edi, eax
jne 0x556430
push esi
call fcn.0057dc2b
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005810d5
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov byte [ebp - 0x1d], bl
lea eax, [ebp - 0x28]
jmp 0x55658b
test ebx, ebx
je 0x5568e2
mov ecx, dword [ebp - 0x50]
push esi
push edi
push eax
push ebx
call fcn.00415a00
cmp byte [ebp - 0x35], 0
jns 0x55649e
push dword [ebp - 0x40]
call fcn.0057dc2b
add esp, 4
mov bl, 1
mov esi, dword [ebp - 0x50]
lea edi, [ebp - 0x1c]
cmp byte [ebp - 0x29], 0
jns 0x5564b7
push dword [ebp - 0x34]
call fcn.0057dc2b
add esp, 4
cmp byte [ebp - 0x1d], 0
jns 0x5564c8
push dword [ebp - 0x28]
call fcn.0057dc2b
add esp, 4
cmp byte [ebp - 0x11], 0
jns 0x5564d9
push dword [ebp - 0x1c]
call fcn.0057dc2b
add esp, 4
mov edx, dword [ebp - 0x64]
add edx, 0xc
cmp edx, dword [ebp - 0x60]
je 0x556401
xor eax, eax
dec eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
cmp byte [edx + 0xb], 0
mov dword [ebp - 0x64], edx
jns 0x5568e5
mov ecx, edi
push dword [edx + 4]
push dword [edx]
call fcn.00556f30
movsx eax, byte [ebp - 0x11]
test eax, eax
cmovs eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
cmovns ecx, edi
test eax, eax
js 0x5568a0
mov dword [ebp - 0x4c], ebx
je 0x556532
test ecx, ecx
je 0x5568d0
push 3
push 0x19
push 0x635774
push eax
push ecx
lea eax, [ebp - 0x34]
push eax
call fcn.00540fd0
add esp, 0x18
mov ebx, dword [ebp - 0x30]
cmp ebx, 0x7ffffff8
jae 0x5568a3
mov esi, dword [ebp - 0x34]
cmp ebx, 4
jbe 0x55646e
mov edi, ebx
or edi, 3
inc edi
js 0x5568bb
lea eax, [edi + edi]
push eax
call fcn.0057dc30
add esp, 4
mov dword [ebp - 0x28], eax
or edi, 0x80000000
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], ebx
lea edi, [eax + ebx*2]
cmp eax, esi
ja 0x55659a
cmp edi, esi
ja 0x5568d3
test ebx, ebx
je 0x5565ab
add ebx, ebx
push ebx
push esi
push eax
call fcn.005822f0
add esp, 0xc
mov word [edi], 0
cmp byte [ebp - 0x11], 0
jns 0x5565c1
push dword [ebp - 0x1c]
call fcn.0057dc2b
add esp, 4
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x14], eax
movsd xmm0, qword [ebp - 0x28]
movsd qword [ebp - 0x1c], xmm0
xor eax, eax
mov dword [ebp - 0x20], eax
xorps xmm0, xmm0
movsd qword [ebp - 0x28], xmm0
mov dword [ebp - 0x2c], eax
movsd qword [ebp - 0x34], xmm0
movsx eax, byte [ebp - 0x11]
test eax, eax
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov edi, eax
cmovs edi, ecx
lea esi, [ebp - 0x1c]
cmovs esi, edx
test edi, edi
js 0x5568a6
je 0x55660f
test esi, esi
je 0x5568d6
mov ebx, eax
cmp edi, 2
je 0x5568fc
test byte [ebp - 0x4c], 1
lea edi, [ebp - 0x1c]
je 0x5568c1
mov ecx, edi
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x34]
push eax
call fcn.0054ebb0
add esp, 4
test al, al
je 0x556851
cmp dword [ebp - 0x6c], 0
je 0x5566d2
movsx edi, byte [ebp - 0x1d]
test edi, edi
cmovs edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
lea eax, [ebp - 0x28]
cmovns esi, eax
test edi, edi
js 0x5568a9
je 0x55666f
test esi, esi
je 0x5568d9
mov ecx, esi
mov edx, edi
call fcn.00556b50
test eax, eax
je 0x5566d2
cmp edi, eax
je 0x5566d2
lea ecx, [esi + edi*2]
mov edx, ecx
test edi, edi
je 0x5566a2
mov edx, esi
mov ebx, edi
nop dword [eax]
cmp word [edx], 0x3d
je 0x55674b
add edx, 2
dec ebx
jne 0x556690
mov edx, ecx
sub edi, eax
jb 0x5568ac
mov ebx, edx
sub ebx, esi
sar ebx, 1
cmp edx, ecx
mov ecx, 0xffffffff
cmove ebx, ecx
sub ebx, eax
cmp edi, ebx
cmovb ebx, edi
test ebx, ebx
js 0x5568af
cmp ebx, 0xf
je 0x556758
movsx esi, byte [ebp - 0x29]
test esi, esi
cmovs esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
lea eax, [ebp - 0x34]
cmovns edi, eax
test esi, esi
js 0x5568b2
je 0x5566f7
test edi, edi
je 0x5568dc
movsx eax, byte [ebp - 0x1d]
test eax, eax
cmovs eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
lea edx, [ebp - 0x28]
cmovns ecx, edx
test eax, eax
js 0x5568b5
je 0x55671c
test ecx, ecx
je 0x5568df
push eax
push ecx
lea ebx, [ebp - 0x40]
push ebx
call fcn.00557410
add esp, 0xc
movsx eax, byte [ebp - 0x35]
test eax, eax
jns 0x556738
mov eax, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x40]
test eax, eax
js 0x5568b8
je 0x556481
jmp 0x556479
test edx, edx
jne 0x5566a2
jmp 0x5566a0
cmp word [esi + eax*2], 0x73
jne 0x5566d2
cmp word [esi + eax*2 + 2], 0x69
jne 0x5566d2
cmp word [esi + eax*2 + 4], 0x6e
jne 0x5566d2
cmp word [esi + eax*2 + 6], 0x67
jne 0x5566d2
cmp word [esi + eax*2 + 8], 0x6c
jne 0x5566d2
cmp word [esi + eax*2 + 0xa], 0x65
jne 0x5566d2
cmp word [esi + eax*2 + 0xc], 0x2d
jne 0x5566d2
cmp word [esi + eax*2 + 0xe], 0x61
jne 0x5566d2
cmp word [esi + eax*2 + 0x10], 0x72
jne 0x5566d2
cmp word [esi + eax*2 + 0x12], 0x67
jne 0x5566d2
cmp word [esi + eax*2 + 0x14], 0x75
jne 0x5566d2
cmp word [esi + eax*2 + 0x16], 0x6d
jne 0x5566d2
cmp word [esi + eax*2 + 0x18], 0x65
jne 0x5566d2
cmp word [esi + eax*2 + 0x1a], 0x6e
jne 0x5566d2
cmp word [esi + eax*2 + 0x1c], 0x74
jne 0x5566d2
lea edx, [ebp - 0x28]
mov ecx, dword [ebp - 0x50]
call fcn.005df020
cmp byte [ebp - 0x29], 0
jns 0x556827
push dword [ebp - 0x34]
call fcn.0057dc2b
add esp, 4
cmp byte [ebp - 0x1d], 0
jns 0x556838
push dword [ebp - 0x28]
call fcn.0057dc2b
add esp, 4
cmp byte [ebp - 0x11], 0
jns 0x556849
push dword [ebp - 0x1c]
call fcn.0057dc2b
add esp, 4
mov esi, dword [ebp - 0x50]
jmp 0x556401
mov al, byte [ebp - 0x11]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 0x45], al
movzx eax, al
mov bl, 1
mov dword [ebp - 0x4c], ebx
cmp byte [ebp - 0x45], 0
cmovs eax, ecx
cmovns edx, edi
test eax, eax
mov esi, dword [ebp - 0x50]
js 0x556948
mov ebx, dword [ebp - 0x4c]
je 0x556887
test edx, edx
je 0x55694b
mov ecx, esi
push eax
call fcn.0041a280
add esp, 4
jmp 0x5564a6
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
mov dword [ebp - 0x4c], 0
mov byte [ebp - 0x45], bl
jmp 0x556865
int3
int3
int3
int3
int3
int3
int3
int3
mov eax, dword [edx + 8]
mov dword [ebp - 0x14], eax
movsd xmm0, qword [edx]
movsd qword [ebp - 0x1c], xmm0
jmp 0x55650d
int3
cmp word [esi], 0x2d
jne 0x55661a
test bl, bl
lea esi, [ebp - 0x1c]
cmovs esi, edx
cmp word [esi + 2], 0x2d
jne 0x55661a
mov dword [ebp - 0x4c], 0
lea edi, [ebp - 0x1c]
mov byte [ebp - 0x45], bl
jmp 0x556865
int3
xor edi, edi
mov dword [ebp - 0x54], 0
jmp 0x5562c6
int3
int3
int3
int3
int3
int3
lea ecx, [ebp - 0x1c]
call fcn.0057b7b0
lea edi, [ebp - 0x1c]
jmp 0x5563a6
int3
lea eax, [ebp - 0x44]
push eax
push esi
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
jmp 0x5561e0