Function at 0x458590
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
cmp byte [esp + 0x80], 0
je 0x4585b0
mov byte [ecx], 0
mov byte [ecx + 0x18], 0
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0x78]
cmp edx, 4
je 0x4586dc
cmp edx, 3
je 0x458682
cmp edx, 1
jne 0x4585a1
cmp dword [eax + 4], 4
jne 0x4585a1
mov dword [esp + 0x10], ecx
mov byte [esp + 0x14], 0xe
mov dword [esp + 0x15], 0x20494241
mov dword [esp + 0x18], 0x67617420
mov byte [esp + 0x1c], 0
mov eax, dword [eax]
mov ecx, dword [eax]
test ecx, ecx
je 0x458843
xor ebp, ebp
mov esi, 0x15
nop word cs:[eax + eax]
mov dword [esp], esi
mov esi, ebp
shld esi, ecx, 0x1f
mov ebx, ebp
shr ebx, 1
mov edi, esi
add edi, ebx
adc edi, 0
mov eax, edi
mov edx, 0xcccccccd
mul edx
shr edx, 2
lea eax, [edx + edx*4]
sub edi, eax
sub esi, edi
sbb ebx, 0
mov eax, esi
mov edx, 0xcccccccd
mul edx
imul esi, esi, 0xcccccccc
add esi, edx
imul edx, ebx, 0xcccccccd
add edx, esi
mov esi, eax
add esi, eax
lea esi, [esi + esi*4]
mov ebx, ecx
sub ebx, esi
mov esi, dword [esp]
or bl, 0x30
mov byte [esp + esi + 0x37], bl
dec esi
mov edi, 9
cmp edi, ecx
mov ecx, 0
sbb ecx, ebp
mov ecx, eax
mov ebp, edx
jb 0x458610
jmp 0x45884d
mov byte [esp + 0x14], 0x10
mov dword [esp + 0x19], 0x67617420
mov dword [esp + 0x15], 0x68637241
mov byte [esp + 0x1d], 0
lea esi, [esp + 0x20]
mov ebp, dword [eax]
test ebp, ebp
je 0x45877f
mov ebx, dword [eax + 4]
cmp ebx, 0xfffffff8
jae 0x458b8f
mov dword [esp + 0x10], ecx
cmp ebx, 0xb
jae 0x45878f
mov eax, ebx
add al, bl
mov byte [esp + 0x20], al
lea edi, [esp + 0x21]
test ebx, ebx
jne 0x4587b7
jmp 0x4587c2
cmp dword [eax + 4], 4
jne 0x4585a1
mov dword [esp + 0x10], ecx
mov eax, dword [eax]
mov edi, dword [eax]
xorps xmm0, xmm0
movsd qword [esp + 0x50], xmm0
mov dword [esp + 0x58], 0
xorps xmm0, xmm0
movups xmmword [esp + 0x18], xmm0
mov byte [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 1
mov eax, dword [sym.imp.libLLVM_18.dll_vtable_for_llvm::raw_string_ostream]
add eax, 8
mov dword [esp + 0x14], eax
lea eax, [esp + 0x50]
mov dword [esp + 0x34], eax
lea esi, [esp + 0x14]
mov ecx, esi
push 0
push 0
push 0
call fcn.0054f21e
mov dword [esp + 0x5c], 0x55fc0c
mov dword [esp + 0x60], 6
sub esp, 0x10
movsd xmm0, qword [esp + 0x6c]
movsd qword [esp + 4], xmm0
mov dword [esp + 0xc], esi
mov dword [esp], edi
call fcn.0045b750
add esp, 0x10
mov ecx, dword [esp + 0x34]
movzx eax, byte [ecx]
test al, 1
je 0x4587f3
mov eax, dword [ecx + 4]
jmp 0x4587f5
xorps xmm0, xmm0
movsd qword [esi], xmm0
mov dword [esi + 8], 0
jmp 0x4587ca
mov esi, ebx
or ebx, 7
lea eax, [ebx + 1]
push eax
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov edi, eax
mov dword [esp + 0x28], eax
add ebx, 2
mov dword [esp + 0x20], ebx
mov ebx, esi
lea esi, [esp + 0x20]
mov dword [esp + 0x24], ebx
push ebx
push ebp
push edi
call sub.msvcrt.dll_memmove
add esp, 0xc
mov byte [edi + ebx], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov dword [ecx + 8], eax
movsd xmm0, qword [esp + 0x14]
movsd qword [ecx], xmm0
movsd xmm0, qword [esi]
movsd qword [ecx + 0xc], xmm0
mov eax, dword [esi + 8]
mov dword [ecx + 0x14], eax
mov byte [ecx + 0x18], 1
jmp 0x4585a8
shr eax, 1
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
sub edx, ecx
test eax, eax
je 0x458823
cmp edx, 2
ja 0x4588e9
lea ecx, [esp + 0x14]
push 3
push 0x55fc84
call fcn.0054f224
mov esi, eax
jmp 0x4588f7
cmp edx, 1
ja 0x4589ee
lea ecx, [esp + 0x14]
push 2
push 0x557ef1
call fcn.0054f224
mov esi, eax
jmp 0x4589fc
mov byte [esp + 0x4c], 0x30
mov esi, 0x14
lea ecx, [esp + 0x20]
mov ebx, 0x15
sub ebx, esi
cmp ebx, 0xfffffff8
jae 0x458b91
cmp ebx, 0xa
mov ebp, dword [esp + 0x10]
ja 0x458878
mov eax, ebx
add al, bl
mov byte [esp + 0x20], al
lea edi, [esp + 0x21]
jmp 0x4588a0
mov dword [esp], esi
mov esi, ebx
or esi, 7
lea eax, [esi + 1]
push eax
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov edi, eax
mov dword [esp + 0x28], eax
add esi, 2
mov dword [esp + 0x20], esi
mov esi, dword [esp]
mov dword [esp + 0x24], ebx
cmp esi, 0x15
je 0x4588b8
lea eax, [esp + esi]
add eax, 0x38
push ebx
push eax
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
lea ecx, [esp + 0x20]
mov byte [edi], 0
mov eax, dword [esp + 0x1c]
mov dword [ebp + 8], eax
movsd xmm0, qword [esp + 0x14]
movsd qword [ebp], xmm0
mov eax, dword [ecx + 8]
mov dword [ebp + 0x14], eax
movsd xmm0, qword [ecx]
movsd qword [ebp + 0xc], xmm0
mov byte [ebp + 0x18], 1
jmp 0x4585a8
mov byte [ecx + 2], pe_nt_image_headers32
mov word [ecx], 0x3028
add dword [esp + 0x24], 3
test edi, edi
je 0x45893b
xor eax, eax
mov ebp, 0x11
mov ecx, 0xf
xor edx, edx
nop dword [eax]
mov ebx, edi
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789ABCDEF]
mov byte [esp + ebp + 0x37], bl
mov ebx, eax
shld ebx, edi, 0x1c
dec ebp
shr edx, 4
cmp ecx, edi
mov edi, 0
sbb edi, eax
mov edi, ebx
mov eax, edx
jb 0x458910
jmp 0x458945
mov byte [esp + 0x48], 0x30
mov ebp, 0x10
mov ebx, 0x11
sub ebx, ebp
cmp ebx, 0xfffffff8
jae 0x458b96
cmp ebx, 0xa
ja 0x458968
mov eax, ebx
add al, bl
mov byte [esp + 4], al
lea edi, [esp + 5]
jmp 0x458990
mov dword [esp], esi
mov esi, ebx
or esi, 7
lea eax, [esi + 1]
push eax
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov edi, eax
mov dword [esp + 0xc], eax
add esi, 2
mov dword [esp + 4], esi
mov esi, dword [esp]
mov dword [esp + 8], ebx
cmp ebp, 0x11
je 0x4589a8
lea eax, [esp + ebp]
add eax, 0x38
push ebx
push eax
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
mov byte [edi], 0
movzx eax, byte [esp + 4]
test al, 1
je 0x4589be
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
jmp 0x4589c4
shr eax, 1
lea edx, [esp + 5]
mov ecx, esi
push eax
push edx
call fcn.0054f224
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0xc], ecx
je 0x4589e0
mov byte [ecx], 0x29
inc dword [eax + 0x10]
jmp 0x458acd
mov ecx, eax
push 1
push 0x5564e0
jmp 0x458ac8
mov word [ecx], 0x7830
add dword [esp + 0x24], 2
lea esi, [esp + 0x14]
test edi, edi
je 0x458a3b
xor eax, eax
mov ebp, 0x11
mov ecx, 0xf
xor edx, edx
nop
mov ebx, edi
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789ABCDEF]
mov byte [esp + ebp + 0x37], bl
mov ebx, eax
shld ebx, edi, 0x1c
dec ebp
shr edx, 4
cmp ecx, edi
mov edi, 0
sbb edi, eax
mov edi, ebx
mov eax, edx
jb 0x458a10
jmp 0x458a45
mov byte [esp + 0x48], 0x30
mov ebp, 0x10
mov ebx, 0x11
sub ebx, ebp
cmp ebx, 0xfffffff8
jae 0x458b96
cmp ebx, 0xa
ja 0x458a68
mov eax, ebx
add al, bl
mov byte [esp + 4], al
lea edi, [esp + 5]
jmp 0x458a90
mov dword [esp], esi
mov esi, ebx
or esi, 7
lea eax, [esi + 1]
push eax
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov edi, eax
mov dword [esp + 0xc], eax
add esi, 2
mov dword [esp + 4], esi
mov esi, dword [esp]
mov dword [esp + 8], ebx
cmp ebp, 0x11
je 0x458aa8
lea eax, [esp + ebp]
add eax, 0x38
push ebx
push eax
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
mov byte [edi], 0
movzx eax, byte [esp + 4]
test al, 1
je 0x458abe
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
jmp 0x458ac4
shr eax, 1
lea edx, [esp + 5]
mov ecx, esi
push eax
push edx
call fcn.0054f224
test byte [esp + 4], 1
je 0x458ae0
push dword [esp + 0xc]
call sub.libc.dll_operator_delete_void_
add esp, 4
push 0x10
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], 0x11
mov dword [esp + 0x3c], 0xd
mov word [eax + 0xc], 0x73
mov dword [eax + 8], 0x67616c66
mov dword [eax + 4], 0x20657275
mov dword [eax], 0x74616546
lea esi, [esp + 0x44]
mov eax, dword [esp + 0x34]
test byte [eax], 1
jne 0x458b35
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
movsd xmm0, qword [eax]
movsd qword [esi], xmm0
jmp 0x458b42
mov ecx, esi
push dword [eax + 4]
push dword [eax + 8]
call fcn.00407730
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
movsd xmm0, qword [esp + 0x38]
movsd qword [eax], xmm0
movsd xmm0, qword [esi]
movsd qword [eax + 0xc], xmm0
mov ecx, dword [esi + 8]
mov dword [eax + 0x14], ecx
mov byte [eax + 0x18], 1
lea ecx, [esp + 0x14]
call fcn.0054f236
test byte [esp + 0x50], 1
je 0x4585a8
push dword [esp + 0x58]
call sub.libc.dll_operator_delete_void_
add esp, 4
jmp 0x4585a8
mov ecx, esi
call fcn.00407790
lea ecx, [esp + 4]
call fcn.00407790
int3