Function at 0x4386e0
Capabilities:
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc4
mov esi, edx
mov edi, ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x18], eax
lea ebx, [ecx + 0x20]
cmp dword [ecx + 0x24], 0
je 0x43874e
mov dword [esp + 0x54], 7
lea eax, [esi + 0xc]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 7
lea eax, [esi + 0x24]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 7
mov dword [esp + 0x68], esi
lea eax, [esp + 0x54]
lea ecx, [esp + 0x10]
push eax
push 3
push ebx
push ecx
call dbg.ffParseFormatString
jmp 0x438773
cmp byte [0x506391], 0
mov eax, dword [esi + 0x14]
lea ecx, [esp + 0x10]
je 0x438b68
push eax
push 0x4f3760
push 0x4f39d6
push ecx
call dbg.ffStrbufAppendF
add esp, 0x10
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x28]
push eax
push dword [esi + 0x3c]
push dword [esi + 0x38]
call dbg.ffParseSize
add esp, 0xc
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x1c]
push eax
push dword [esi + 0x54]
push dword [esi + 0x50]
call dbg.ffParseSize
add esp, 0xc
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
mov edx, eax
or edx, ecx
je 0x4388dd
movsd xmm0, qword [esi + 0x38]
movapd xmm1, xmmword [0x4f3730]
unpcklps xmm0, xmm1
movapd xmm2, xmmword [0x4f3740]
subpd xmm0, xmm2
movapd xmm4, xmm0
unpckhpd xmm4, xmm0
addsd xmm4, xmm0
movd xmm0, eax
movd xmm3, ecx
punpckldq xmm0, xmm3
punpckldq xmm0, xmm1
subpd xmm0, xmm2
movapd xmm1, xmm0
unpckhpd xmm1, xmm0
addsd xmm1, xmm0
divsd xmm4, xmm1
mulsd xmm4, qword [0x4f3750]
cmp dword [edi + 0x3c], 0
je 0x4388eb
mov dword [esp + 0x34], ebx
mov dword [esp], 0
mov dword [esp + 4], 0
mov eax, dword [0x5052b0]
mov dword [esp + 8], eax
sub esp, 0x14
movzx eax, word [edi + 0x5c]
add edi, 0x5c
mov word [esp + 0xc], ax
movsd qword [esp + 4], xmm4
lea ebp, [esp + 0x14]
mov dword [esp], ebp
mov dword [esp + 0x10], 0
call dbg.ffPercentAppendNum
add esp, 0x14
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x4c], eax
lea ebx, [esi + 0x5c]
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x4389fc
movsd xmm1, qword [0x4f3758]
movss xmm0, dword [esi + 0x58]
orpd xmm0, xmm1
subsd xmm0, xmm1
movd xmm2, eax
por xmm2, xmm1
subsd xmm2, xmm1
divsd xmm0, xmm2
mulsd xmm0, qword [0x4f3750]
jmp 0x438a00
xorpd xmm4, xmm4
cmp dword [edi + 0x3c], 0
jne 0x43883c
movupd xmmword [esp + 0x34], xmm4
push 1
push ebx
push 0
push dword [esp + 0x24]
call dbg.ffPrintLogoAndKey
add esp, 0x10
mov dword [esp], 0
mov dword [esp + 4], 0
mov eax, dword [0x5052b0]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x50]
or eax, dword [esi + 0x54]
je 0x438b82
movzx eax, byte [0x5063e6]
test al, 2
movupd xmm0, xmmword [esp + 0x34]
jne 0x438bb4
test al, 4
jne 0x438cea
mov eax, esp
push dword [esp + 0x24]
push dword [esp + 0x34]
push 0x4f39fd
push eax
call dbg.ffStrbufAppendF
movupd xmm0, xmmword [esp + 0x44]
add esp, 0x10
movzx eax, byte [0x5063e6]
test al, 1
je 0x438cf2
xor eax, eax
cmp dword [esp + 4], 0
setne al
sub esp, 0x14
movzx ecx, word [edi + 0x5c]
mov word [esp + 0xc], cx
mov dword [esp + 0x10], eax
movsd qword [esp + 4], xmm0
lea eax, [esp + 0x14]
mov dword [esp], eax
call dbg.ffPercentAppendNum
add esp, 0x14
mov eax, dword [esp]
mov ebx, dword [esp + 4]
test eax, eax
je 0x4389b5
lea ecx, [ebx + 1]
cmp eax, ecx
jne 0x438c26
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebx + 2]
nop word cs:[eax + eax]
mov ebp, ecx
add ecx, ecx
cmp edx, ebp
ja 0x4389d0
test eax, eax
je 0x438c3b
push ebp
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov edi, eax
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
jmp 0x438c8c
xorpd xmm0, xmm0
sub esp, 0x14
movzx eax, word [edi]
mov word [esp + 0xc], ax
movsd qword [esp + 4], xmm0
lea edi, [esp + 0x58]
mov dword [esp], edi
mov dword [esp + 0x10], 0
call dbg.ffPercentAppendNum
add esp, 0x14
movzx eax, byte [esi + 0x30]
mov ecx, eax
shr cl, 2
and cl, 1
mov byte [esp + 0xf], cl
mov ecx, eax
shr cl, 1
and cl, 1
mov byte [esp + 0xe], cl
shr al, 5
and al, 1
mov byte [esp + 0xd], al
mov eax, dword [esp + 0x18]
mov dword [esp + 0x6c], 7
lea ecx, [esp + 0x28]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], 7
lea ecx, [esp + 0x1c]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], 7
mov dword [esp + 0x80], ebp
mov dword [esp + 0x84], 1
lea ecx, [esi + 0x58]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], 1
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], 7
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], 0xb
lea ecx, [esp + 0xf]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], 0xb
lea ecx, [esp + 0xe]
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], 7
lea ecx, [esi + 0x18]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], 7
add esi, 0x24
mov dword [esp + 0xb8], esi
mov dword [esp + 0xbc], 0xb
lea ecx, [esp + 0xd]
mov dword [esp + 0xc0], ecx
lea ecx, [esp + 0x6c]
push ecx
push 0xb
push 1
push dword [esp + 0x40]
push 0
push eax
call dbg.ffPrintFormat
add esp, 0x18
cmp dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
je 0x43924e
mov dword [esp + 0x44], 0
push dword [esp + 0x4c]
call sym._free
add esp, 4
jmp 0x43924e
push eax
push eax
push 0x4f3760
push str._s__e_8__file:___se_se_8__e_
push ecx
call dbg.ffStrbufAppendF
add esp, 0x14
jmp 0x438776
push 0x20
call sym._malloc
add esp, 4
mov dword [esp + 8], eax
mov dword [esp], 0x20
mov dword [eax + 4], 0x206e776f
mov dword [eax], 0x6e6b6e55
mov dword [esp + 4], 8
add eax, 8
jmp 0x438ca2
sub esp, 0x10
movzx eax, word [edi + 0x5c]
mov word [esp + 0xc], ax
movsd qword [esp + 4], xmm0
lea eax, [esp + 0x10]
mov dword [esp], eax
call dbg.ffPercentAppendBar
add esp, 0x10
mov eax, dword [esp]
mov ebp, dword [esp + 4]
test eax, eax
je 0x438be7
lea ecx, [ebp + 1]
cmp eax, ecx
jne 0x438c2c
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebp + 2]
nop word cs:[eax + eax]
mov ebx, ecx
add ecx, ecx
cmp edx, ebx
ja 0x438c00
test eax, eax
je 0x438c5d
push ebx
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov dword [esp + 8], eax
mov ebp, dword [esp + 4]
jmp 0x438cbb
mov edi, dword [esp + 8]
jmp 0x438c92
mov eax, dword [esp + 8]
movupd xmm0, xmmword [esp + 0x34]
jmp 0x438cc7
push ebp
call sym._malloc
add esp, 4
mov edi, eax
test ebx, ebx
je 0x438c85
lea eax, [ebx + 1]
push eax
push dword [esp + 0xc]
push edi
call sym._memcpy
add esp, 0xc
jmp 0x438c88
push ebx
call sym._malloc
add esp, 4
test ebp, ebp
je 0x438cb4
lea ecx, [ebp + 1]
push ecx
push dword [esp + 0xc]
push eax
mov dword [esp + 0x5c], eax
call sym._memcpy
mov eax, dword [esp + 0x5c]
add esp, 0xc
jmp 0x438cb7
mov byte [edi], 0
mov dword [esp + 8], edi
mov dword [esp], ebp
lea ecx, [ebx + 1]
mov dword [esp + 4], ecx
mov byte [edi + ebx], 0x20
mov eax, dword [esp + 8]
add eax, dword [esp + 4]
mov byte [eax], 0
test byte [0x5063e6], 4
jne 0x439180
jmp 0x438cff
mov byte [eax], 0
mov dword [esp + 8], eax
movupd xmm0, xmmword [esp + 0x34]
mov dword [esp], ebx
lea ecx, [ebp + 1]
mov dword [esp + 4], ecx
mov byte [eax + ebp], 0x20
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov byte [ecx + eax], 0
movzx eax, byte [0x5063e6]
test al, 4
je 0x438943
test al, 1
jne 0x438970
test byte [0x5063e6], 4
jne 0x439180
cmp dword [esi + 0x1c], 0
je 0x438d18
mov eax, esp
push dword [esi + 0x20]
push str.___s
push eax
call dbg.ffStrbufAppendF
add esp, 0xc
mov eax, dword [esp]
mov ebx, dword [esp + 4]
test eax, eax
je 0x438d2a
lea ecx, [ebx + 1]
cmp eax, ecx
jne 0x438d65
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebx + 2]
nop dword [eax + eax]
mov ebp, ecx
add ecx, ecx
cmp edx, ebp
ja 0x438d40
test eax, eax
je 0x438d6b
push ebp
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov edi, eax
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
jmp 0x438d94
mov edi, dword [esp + 8]
jmp 0x438d9a
push ebp
call sym._malloc
add esp, 4
mov edi, eax
test ebx, ebx
je 0x438d8d
lea eax, [ebx + 1]
push eax
push dword [esp + 0xc]
push edi
call sym._memcpy
add esp, 0xc
jmp 0x438d90
mov byte [edi], 0
mov dword [esp + 8], edi
mov dword [esp], ebp
lea ecx, [ebx + 1]
mov dword [esp + 4], ecx
mov byte [edi + ebx], 0x5b
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov byte [ecx + eax], 0
mov eax, dword [esi + 0x30]
test al, 4
jne 0x438dd2
test al, 8
jne 0x438e8c
test al, 2
jne 0x438f3d
test al, 0x20
jne 0x438ff5
jmp 0x4390a2
mov eax, dword [esp]
mov ebx, dword [esp + 4]
test eax, eax
je 0x438de8
mov ecx, ebx
not ecx
add ecx, eax
cmp ecx, 0xa
jae 0x438e25
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebx + 0xb]
nop word cs:[eax + eax]
mov ebp, ecx
add ecx, ecx
cmp edx, ebp
ja 0x438e00
test eax, eax
je 0x438e2b
push ebp
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov edi, eax
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
jmp 0x438e54
mov edi, dword [esp + 8]
jmp 0x438e57
push ebp
call sym._malloc
add esp, 4
mov edi, eax
test ebx, ebx
je 0x438e4d
lea eax, [ebx + 1]
push eax
push dword [esp + 0xc]
push edi
call sym._memcpy
add esp, 0xc
jmp 0x438e50
mov byte [edi], 0
mov dword [esp + 8], edi
mov dword [esp], ebp
mov word [edi + ebx + 8], 0x202c
mov dword [edi + ebx + 4], 0x6c616e72
mov dword [edi + ebx], 0x65747845
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
lea edx, [eax + 0xa]
mov dword [esp + 4], edx
mov byte [ecx + eax + 0xa], 0
mov eax, dword [esi + 0x30]
test al, 8
je 0x438dbd
mov eax, dword [esp]
mov ebx, dword [esp + 4]
test eax, eax
je 0x438ea2
mov ecx, ebx
not ecx
add ecx, eax
cmp ecx, 0xb
jae 0x438ed5
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebx + 0xc]
mov ebp, ecx
add ecx, ecx
cmp edx, ebp
ja 0x438eb0
test eax, eax
je 0x438edb
push ebp
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov edi, eax
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
jmp 0x438f04
mov edi, dword [esp + 8]
jmp 0x438f07
push ebp
call sym._malloc
add esp, 4
mov edi, eax
test ebx, ebx
je 0x438efd
lea eax, [ebx + 1]
push eax
push dword [esp + 0xc]
push edi
call sym._memcpy
add esp, 0xc
jmp 0x438f00
mov byte [edi], 0
mov dword [esp + 8], edi
mov dword [esp], ebp
mov dword [edi + ebx + 7], 0x202c656d
mov dword [edi + ebx + 4], 0x6d756c6f
mov dword [edi + ebx], 0x76627553
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
lea edx, [eax + 0xb]
mov dword [esp + 4], edx
mov byte [ecx + eax + 0xb], 0
mov eax, dword [esi + 0x30]
test al, 2
je 0x438dc5
mov eax, dword [esp]
mov ebx, dword [esp + 4]
test eax, eax
je 0x438f53
mov ecx, ebx
not ecx
add ecx, eax
cmp ecx, 8
jae 0x438f95
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [ebx + 9]
nop word cs:[eax + eax]
mov ebp, ecx
add ecx, ecx
cmp edx, ebp
ja 0x438f70
test eax, eax
je 0x438f9b
push ebp
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov edi, eax
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
jmp 0x438fc4
mov edi, dword [esp + 8]
jmp 0x438fc7
push ebp
call sym._malloc
add esp, 4
mov edi, eax
test ebx, ebx
je 0x438fbd
lea eax, [ebx + 1]
push eax
push dword [esp + 0xc]
push edi
call sym._memcpy
add esp, 0xc
jmp 0x438fc0
mov byte [edi], 0
mov dword [esp + 8], edi
mov dword [esp], ebp
mov dword [edi + ebx + 4], 0x202c6e65
mov dword [edi + ebx], 0x64646948
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
lea edx, [eax + 8]
mov dword [esp + 4], edx
mov byte [ecx + eax + 8], 0
mov eax, dword [esi + 0x30]
test al, 0x20
je 0x4390a2
mov eax, dword [esp]
mov edi, dword [esp + 4]
test eax, eax
je 0x43900b
mov ecx, edi
not ecx
add ecx, eax
cmp ecx, 0xb
jae 0x439045
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [edi + 0xc]
nop dword [eax]
mov ebx, ecx
add ecx, ecx
cmp edx, ebx
ja 0x439020
test eax, eax
je 0x43904b
push ebx
push dword [esp + 0xc]
call sym._realloc
add esp, 8
mov esi, eax
mov dword [esp + 8], eax
mov edi, dword [esp + 4]
jmp 0x439074
mov esi, dword [esp + 8]
jmp 0x439077
push ebx
call sym._malloc
add esp, 4
mov esi, eax
test edi, edi
je 0x43906d
lea eax, [edi + 1]
push eax
push dword [esp + 0xc]
push esi
call sym._memcpy
add esp, 0xc
jmp 0x439070
mov byte [esi], 0
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esi + edi + 7], 0x202c796c
mov dword [esi + edi + 4], 0x6c6e6f2d
mov dword [esi + edi], 0x64616552
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
lea edx, [eax + 0xb]
mov dword [esp + 4], edx
mov byte [ecx + eax + 0xb], 0
mov ebx, dword [esp + 4]
mov edi, dword [esp + 8]
movzx eax, byte [edi + ebx - 1]
cmp al, 0x5b
jne 0x4390d6
test ebx, ebx
je 0x439180
cmp dword [esp], 0
je 0x4392e3
lea eax, [edi + ebx]
dec eax
dec ebx
mov dword [esp + 4], ebx
mov byte [eax], 0
jmp 0x439180
test ebx, ebx
je 0x43917b
cmp al, 0x20
jne 0x43917b
inc ebx
nop word [eax + eax]
mov ebp, ebx
lea eax, [ebx - 2]
mov dword [esp + 4], eax
cmp ebx, 2
je 0x439164
lea ebx, [ebp - 1]
cmp byte [edi + ebp - 3], 0x20
je 0x4390f0
cmp dword [esp], 0
jne 0x43916e
lea eax, [ebx - 1]
mov dword [esp + 0x34], eax
mov dword [esp + 4], 0
mov eax, 0x20
nop word cs:[eax + eax]
mov esi, eax
add eax, eax
cmp ebx, esi
ja 0x439130
push esi
call sym._malloc
add esp, 4
mov ebx, eax
mov byte [eax], 0
mov dword [esp + 8], eax
mov dword [esp], esi
mov esi, dword [esp + 0x34]
push esi
push edi
push eax
call sym._memcpy
add esp, 0xc
mov dword [esp + 4], esi
mov edi, ebx
jmp 0x43916e
cmp dword [esp], 0
je 0x439353
mov byte [edi + ebp - 2], 0
mov ebx, dword [esp + 4]
mov edi, dword [esp + 8]
mov byte [ebx + edi - 1], 0x5d
mov eax, dword [esp + 4]
test eax, eax
je 0x439223
mov edi, dword [esp + 8]
cmp byte [eax + edi - 1], 0x20
jne 0x439223
inc eax
nop dword [eax]
mov ebx, eax
add eax, 0xfffffffe
mov dword [esp + 4], eax
cmp ebx, 2
je 0x439214
lea eax, [ebx - 1]
cmp byte [edi + ebx - 3], 0x20
je 0x4391a0
cmp dword [esp], 0
jne 0x43921e
lea ecx, [eax - 1]
mov dword [esp + 0x34], ecx
mov dword [esp + 4], 0
mov ecx, 0x20
nop word cs:[eax + eax]
mov ebp, ecx
add ecx, ecx
cmp eax, ebp
ja 0x4391e0
push ebp
call sym._malloc
add esp, 4
mov esi, eax
mov byte [eax], 0
mov dword [esp + 8], eax
mov dword [esp], ebp
mov ebp, dword [esp + 0x34]
push ebp
push edi
push eax
call sym._memcpy
add esp, 0xc
mov dword [esp + 4], ebp
mov edi, esi
jmp 0x43921e
cmp dword [esp], 0
je 0x439336
mov byte [edi + ebx - 2], 0
push 1
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
mov esi, eax
push eax
push dword [esp + 8]
push 1
push dword [esp + 0x14]
call sym._fwrite
add esp, 0x10
push esi
push 0xa
call sym._fputc
add esp, 8
cmp dword [esp], 0
mov dword [esp + 4], 0
je 0x43926f
mov dword [esp], 0
push dword [esp + 8]
call sym._free
add esp, 4
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
je 0x439292
mov dword [esp + 0x1c], 0
push dword [esp + 0x24]
call sym._free
add esp, 4
cmp dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
je 0x4392b5
mov dword [esp + 0x28], 0
push dword [esp + 0x30]
call sym._free
add esp, 4
cmp dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
je 0x4392d8
mov dword [esp + 0x10], 0
push dword [esp + 0x18]
call sym._free
add esp, 4
add esp, 0xc4
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 4], 0
lea eax, [ebx + 1]
mov ecx, 0x20
nop word cs:[eax + eax]
mov ebp, ecx
add ecx, ecx
cmp eax, ebp
ja 0x439300
push ebp
call sym._malloc
add esp, 4
mov esi, eax
mov byte [eax], 0
mov dword [esp + 8], eax
mov dword [esp], ebp
push ebx
push edi
push eax
call sym._memcpy
add esp, 0xc
mov dword [esp + 4], ebx
add esi, ebx
mov byte [esi], 0
jmp 0x439180
mov dword [esp], 0
mov dword [esp + 4], 0
mov eax, dword [0x5052b0]
mov dword [esp + 8], eax
jmp 0x439223
mov dword [esp], 0
mov dword [esp + 4], 0
mov edi, dword [0x5052b0]
mov dword [esp + 8], edi
xor ebx, ebx
jmp 0x43917b