Function at 0x4309c0
Capabilities:
Print debug messages
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x840
mov eax, dword [0x4b9170]
mov esi, ecx
xor eax, ebp
mov dword [esp + 0x838], eax
lea eax, [ecx + 8]
mov dword [ecx], 0x4a1e70
mov dword [esp + 8], eax
mov eax, dword [ecx + 8]
mov eax, dword [eax + 4]
test byte [ecx + eax + 0x18], 5
je 0x430a1a
movdqa xmm0, xmmword [0x49f210]
mov dword [esp + 0x14], 0xffffffff
movdqa xmmword [esp + 0x40], xmm0
cmp dword [esi + 4], 3
je 0x430a46
jmp 0x430bba
mov ecx, dword [esp + 8]
lea edx, [esp + 0x40]
mov ecx, dword [ecx + eax + 0x18]
mov eax, dword [ecx]
push 0x10
push 1
push 0
push 0
push edx
call dword [eax + 0xc]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], eax
cmp dword [esi + 4], 3
jne 0x430bba
call fcn.0043fb40
test al, al
jne 0x430bba
lea edi, [esp + 0x44c]
push 0x3ec
push 0xff
push edi
call fcn.0047b380
add esp, 0xc
mov ecx, edi
call fcn.0043fb70
mov ebx, dword [esp + 8]
lea edi, [esp + 0x40]
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
push edi
call fcn.0040f39a
mov ecx, edi
push 0x4baea0
call fcn.00421478
mov edx, dword [eax]
mov ecx, eax
push 0xa
call dword [edx + 0x1c]
mov ecx, edi
mov byte [esp + 4], al
call fcn.0041239a
movsx eax, byte [esp + 4]
mov ecx, ebx
push eax
call fcn.00410140
mov ecx, ebx
call fcn.0040f280
lea ecx, [esp + 0x44c]
push ebx
call fcn.0043fbd0
push 0x3f4
push 0xff
push edi
call fcn.0047b380
add esp, 0xc
mov ecx, edi
call fcn.0043fc10
mov ecx, edi
call fcn.0043fd00
test al, al
jne 0x430afc
lea ecx, [esp + 0x40]
push dword [esp + 8]
call fcn.0043fd10
call fcn.0043fe20
test eax, eax
je 0x430bba
cmp dword [eax + 0x38], 0
mov ebx, eax
je 0x430bba
push 0x1d
push str.IPC_message_handler_context:
push dword [esp + 0x10]
call fcn.00403c50
add esp, 0xc
lea edi, [esp + 0x28]
mov dword [esp + 4], eax
push dword [ebx + 0x38]
push str.0x_08X
push edi
call fcn.00433e40
add esp, 0xc
movzx eax, byte [esp + 0x33]
test al, al
jns 0x430b52
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
push eax
push edi
push dword [esp + 0xc]
call fcn.00403c50
add esp, 0xc
mov ebx, eax
mov eax, dword [eax]
lea edi, [esp + 0x38]
mov ecx, dword [eax + 4]
add ecx, ebx
push edi
call fcn.0040f39a
mov ecx, edi
push 0x4baea0
call fcn.00421478
mov edx, dword [eax]
mov ecx, eax
push 0xa
call dword [edx + 0x1c]
mov ecx, edi
mov byte [esp + 4], al
call fcn.0041239a
movsx eax, byte [esp + 4]
mov ecx, ebx
push eax
call fcn.00410140
mov ecx, ebx
call fcn.0040f280
cmp byte [esp + 0x33], 0
jns 0x430bba
push dword [esp + 0x28]
call fcn.00477190
add esp, 4
mov eax, dword [esi + 8]
mov edi, dword [esp + 8]
mov dword [esp + 4], esi
lea esi, [esp + 0x40]
mov ecx, dword [eax + 4]
add ecx, edi
push esi
call fcn.0040f39a
mov ecx, esi
push 0x4baea0
call fcn.00421478
mov edx, dword [eax]
mov ecx, eax
push 0xa
call dword [edx + 0x1c]
mov ecx, esi
mov esi, dword [esp + 4]
mov ebx, eax
call fcn.0041239a
movsx eax, bl
mov ecx, edi
push eax
call fcn.00410140
mov ecx, edi
call fcn.0040f280
lea ebx, [esi + 0xc]
lea edi, [esp + 0x44c]
mov dword [esp + 0x44c], 0xffffffff
mov dword [esp + 0x450], 0xffffffff
mov dword [esp + 0x454], 0xffffffff
mov ecx, ebx
push edi
call fcn.00431570
test byte [0x4b94f4], 0x19
jne 0x430f9f
mov eax, dword [0x4bb560]
test eax, eax
je 0x430c83
push edi
push dword [esi + 0x90]
push dword [esi + 0x98]
push dword [esi + 0x94]
push dword [esi + 4]
call eax
add esp, 0x14
test al, al
je 0x430c83
cmp byte [esp + 0x457], 0
jns 0x430f3c
jmp 0x430f2d
mov eax, dword [0x4b9150]
test al, 2
je 0x430ca9
cmp byte [esp + 0x457], 0
jns 0x430c9d
mov edi, dword [esp + 0x44c]
push edi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, dword [0x4b9150]
test al, 4
jne 0x430cb8
cmp eax, 1
ja 0x430d08
cmp dword [esi + 4], 2
jl 0x430d08
push 2
call fcn.0047bf8f
add esp, 4
movzx ecx, byte [esp + 0x457]
lea edx, [esp + 0x44c]
test cl, cl
cmovs ecx, dword [esp + 0x450]
cmovs edx, dword [esp + 0x44c]
push eax
push 1
push ecx
push edx
call fcn.0048b35d
add esp, 0x10
push 2
call fcn.0047bf8f
add esp, 4
push eax
call fcn.0048af0e
add esp, 4
mov eax, dword [0x4b9150]
test al, 1
je 0x430d53
call fcn.004302b0
test al, al
je 0x430d53
movzx eax, byte [esp + 0x457]
lea ecx, [esp + 0x44c]
mov dword [esp + 0x40], 0xffffffff
test al, al
cmovs eax, dword [esp + 0x450]
cmovs ecx, dword [esp + 0x44c]
push 0
lea edx, [esp + 0x44]
push edx
push eax
push ecx
push dword [0x4bb56c]
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [esi + 4], 3
jne 0x430dd3
mov ecx, dword [0x4bd62c]
mov dword [esp + 0x10], ebx
test ecx, ecx
je 0x430d8f
movzx eax, byte [esp + 0x457]
lea edx, [esp + 0x44c]
test al, al
jns 0x430d88
mov edx, dword [esp + 0x44c]
mov eax, dword [esp + 0x450]
push eax
push edx
call fcn.00440b50
lea ebx, [esp + 0x44]
lea edi, [esp + 0x44c]
push 0x400
push 0xff
push ebx
call fcn.0047b380
add esp, 0xc
cmp byte [edi + 0xb], 0
mov dword [esp + 0x40], 0xbedead01
mov dword [esp + 0x444], 0x5050dead
mov dword [esp + 0xc], edi
jns 0x430ddf
mov eax, dword [esp + 0x44c]
jmp 0x430de6
lea eax, [esp + 0x44c]
jmp 0x430f27
lea eax, [esp + 0x44c]
push 0x400
push eax
push ebx
call fcn.0043c390
add esp, 0xc
lea eax, [esp + 0x40]
push eax
call fcn.0040d920
add esp, 4
mov ecx, dword [0x4bd5f0]
mov edx, dword fs:[0x2c]
mov eax, dword [0x4bb580]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4310bb
mov eax, dword [0x4bb578]
mov ebx, dword [esp + 0x10]
cmp eax, dword [0x4bb57c]
jne 0x430e3e
call fcn.0043fb50
jmp 0x430f23
mov dword [esp + 0x20], 0xffffffff
mov ecx, dword [0x4bd5f0]
mov edx, dword fs:[0x2c]
mov eax, dword [0x4bb580]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x43110f
mov eax, dword [0x4bb57c]
test eax, eax
jne 0x430e75
mov eax, dword [0x4bb574]
dec eax
mov ecx, 0x4bb570
push eax
call fcn.0042bc80
lea ecx, [esp + 0x20]
push eax
call fcn.0043b400
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x430f1a
mov eax, dword [esp + 0xc]
cmp byte [eax + 0xb], 0
jns 0x430eaa
mov ebx, dword [esp + 0x44c]
jmp 0x430eb1
lea ebx, [esp + 0x44c]
mov eax, dword [esp + 0x14]
test ebx, ebx
mov dword [esp + 0x1c], ecx
lea eax, [ebx + eax]
mov dword [esp + 0x18], eax
je 0x430ecf
push eax
call fcn.0048c610
add esp, 4
jmp 0x430ed1
xor eax, eax
mov ecx, dword [esi + 0x90]
mov edi, dword [esp + 0x14]
mov edx, dword [esi + 0x98]
add ebx, ecx
sub edi, ecx
mov ecx, dword [esi + 0x94]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x38]
lea ebx, [esp + 0x28]
push eax
push ebx
push edx
push ecx
mov eax, dword [esp + 0x2c]
push eax
call dword [eax + 4]
add esp, 0x14
mov ebx, dword [esp + 0x10]
lea ecx, [esp + 0x20]
call fcn.0043b3e0
mov eax, dword [esp + 0xc]
cmp byte [eax + 0xb], 0
jns 0x430f3c
push dword [esp + 0x44c]
call fcn.00477190
add esp, 4
lea ecx, [esi + 0xa0]
call fcn.0043f850
mov eax, dword [esi + 8]
mov eax, dword [eax + 4]
mov dword [esi + eax + 8], 0x4a1ef4
mov dword [esi + 0xc], 0x4a1f00
cmp byte [esi + 0x37], 0
lea esi, [esi + 0x40]
jns 0x430f74
mov eax, dword [esp + 8]
push dword [eax + 0x24]
call fcn.00477190
add esp, 4
mov ecx, ebx
call fcn.0040eee4
mov ecx, ebx
call fcn.0040d920
mov ecx, esi
call fcn.0040eeda
mov ecx, dword [esp + 0x838]
xor ecx, ebp
call fcn.004771d1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movzx eax, byte [esp + 0x457]
mov ecx, dword [esp + 0x44c]
mov dword [esp + 0x10], ebx
test al, al
cmovs eax, dword [esp + 0x450]
cmovns ecx, edi
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x38]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x20]
push 0xffffffffffffffff
push dword [esi + 0x90]
push eax
push ecx
call fcn.0043d420
add esp, 0x10
push 0x18
call fcn.00477160
add esp, 4
mov ebx, eax
mov ecx, eax
push dword [esi + 0x98]
push dword [esp + 0x40]
push dword [esp + 0x40]
push dword [esi + 0x94]
call fcn.00440f70
call fcn.0043f8b0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x28]
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x28], 0xffffffff
push eax
call fcn.00441340
add esp, 4
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x50], xmm0
mov word [esp + 0x40], 0x801
mov dword [esp + 0x44], str.message
mov dword [esp + 0x50], ebx
push 0x8008
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x30]
push eax
push dword [esp + 0x18]
push 0
push 0
push 0
push 0
push 0
push str.LogMessage
push 0x4b94f4
push 0x49
call fcn.00444ff0
add esp, 0x30
mov al, byte [esp + 0x40]
test al, al
je 0x4310b2
xor ebx, ebx
jmp 0x431096
inc ebx
movzx ecx, al
cmp ebx, ecx
jae 0x4310b2
cmp byte [esp + ebx + 0x41], 8
jne 0x43108e
mov ecx, dword [esp + ebx*8 + 0x50]
test ecx, ecx
je 0x43108e
mov eax, dword [ecx]
push 1
call dword [eax]
movzx eax, byte [esp + 0x40]
jmp 0x43108e
mov ebx, dword [esp + 0x10]
jmp 0x430c48
push 0x4bb580
call fcn.00477217
add esp, 4
cmp dword [0x4bb580], 0xffffffff
jne 0x430e23
mov dword [0x4bb574], 0
mov dword [0x4bb570], 0
mov dword [0x4bb57c], 0
mov dword [0x4bb578], 0
push 0x4bb580
call fcn.0047728d
add esp, 4
jmp 0x430e23
push 0x4bb580
call fcn.00477217
add esp, 4
cmp dword [0x4bb580], 0xffffffff
jne 0x430e67
mov dword [0x4bb574], 0
mov dword [0x4bb570], 0
mov dword [0x4bb57c], 0
mov dword [0x4bb578], 0
push 0x4bb580
call fcn.0047728d
add esp, 4
jmp 0x430e67