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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xf0
mov esi, edx
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x90]
push dword [ebp + 0xc]
push dword [ebp + 8]
push eax
call fcn.0053b6c0
add esp, 0xc
mov edi, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x98]
test edi, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], ecx
cmove edi, eax
test ecx, ecx
je 0x4475f6
setns al
js 0x447efe
mov byte [esp], al
mov eax, dword [0x6074b4]
mov ebx, dword [0x6074a0]
movzx eax, byte [eax]
mov eax, dword [ebx]
test eax, eax
jne 0x4475d0
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x4475e0
mov dword [ebx], eax
push dword [esp + 0x28]
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
jne 0x4475fb
movzx eax, byte [esp]
push dword [esp + 0x28]
push eax
call fcn.0041a8c0
add esp, 8
jmp 0x447f33
mov eax, 1
mov ebx, dword [esp + 0x28]
push ebx
push edi
push eax
mov edi, eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
lea eax, [esp + 0x60]
push ebx
mov dword [esp + 0x58], edi
push edi
push eax
call fcn.0041ae90
add esp, 0xc
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x68]
mov dword [esp + 0x44], eax
lea ecx, [esp + 0x78]
mov edx, esi
call fcn.00444790
mov ecx, dword [esp + 0x78]
lea eax, [esp + 0x6c]
push dword [esp + 0x80]
mov dword [esp + 0x54], ecx
push ecx
push eax
call fcn.0041ae90
add esp, 0xc
mov eax, dword [esp + 0x6c]
lea ecx, [esp + 0xa8]
push dword [esp + 0x74]
mov dword [esp + 0x50], eax
push eax
push edi
push dword [esp + 0x50]
push ecx
call fcn.00428f40
add esp, 0x14
mov eax, dword [esp + 0xd8]
cmp dword [esp + 0xa8], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0xdc]
mov dword [esp], eax
je 0x44786f
mov edx, dword [esp + 0xe4]
mov ebx, dword [esp + 0xc8]
mov dword [esp + 0x10], ebx
sub ebx, edx
mov ecx, edx
mov dword [esp + 4], edx
cmp ebx, eax
jae 0x44787d
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0xbc]
mov esi, dword [esp + 0xb0]
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0xc0]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
cmp edx, eax
mov ecx, eax
mov dword [esp + 0x34], esi
cmova ecx, edx
cmp dword [esp + 0xcc], 0xffffffff
mov dword [esp + 0x2c], ecx
je 0x447944
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xd0]
mov esi, eax
neg esi
mov dword [esp + 0x38], esi
sub ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 8]
xor edx, edx
movzx ecx, byte [eax + ebx]
mov eax, 1
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edx, eax
cmovne eax, ecx
and edx, dword [esp + 0x1c]
and eax, dword [esp + 0x20]
or eax, edx
jne 0x4477b9
nop word [eax + eax]
lea eax, [esi + ebx]
cmp eax, dword [esp]
jae 0x44787d
mov eax, dword [esp + 0x14]
xor edx, edx
movzx ecx, byte [eax + ebx]
mov eax, 1
sub ebx, dword [esp + 4]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edx, eax
cmovne eax, ecx
and edx, dword [esp + 0x1c]
and eax, dword [esp + 0x20]
or eax, edx
je 0x447770
mov edi, dword [esp + 4]
lea eax, [edi + ebx]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 8]
mov ecx, edi
cmp eax, edi
lea esi, [edx + ebx]
cmovb ecx, eax
dec ecx
nop dword [eax]
cmp ecx, 0xffffffff
je 0x447814
cmp ecx, dword [esp + 4]
jae 0x447d44
lea edx, [ebx + ecx]
cmp edx, dword [esp]
jae 0x447d52
mov eax, dword [esp + 0xc]
lea edx, [ecx - 1]
movzx eax, byte [eax + ecx]
cmp al, byte [esi + ecx]
mov ecx, edx
je 0x4477d0
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 4]
sub ebx, dword [esp + 0x18]
mov edi, eax
lea ebx, [ebx + edx + 1]
mov edx, dword [esp]
jmp 0x44785b
mov ecx, dword [esp + 0x18]
mov edx, dword [esp]
cmp edi, ecx
cmovbe edi, ecx
cmp edi, ecx
je 0x447b29
cmp dword [esp + 0x2c], ecx
je 0x447d68
lea eax, [ebx + ecx]
cmp eax, edx
jae 0x447f08
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + ecx]
cmp al, byte [esi + ecx]
lea ecx, [ecx + 1]
je 0x447820
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 4]
sub ebx, edi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x10], ebx
sub ebx, eax
cmp ebx, edx
jb 0x44773c
jmp 0x44787d
cmp byte [esp + 0xb6], 0
je 0x447911
mov eax, dword [esp + 0x40]
mov dword [eax], 0
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x70], 0
je 0x4478a4
mov eax, dword [0x6074a0]
push dword [esp + 0x4c]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x7c], 0
je 0x4478bd
mov eax, dword [0x6074a0]
push dword [esp + 0x50]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x64], 0
je 0x4478d6
mov eax, dword [0x6074a0]
push dword [esp + 0x44]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x28], 0
je 0x4478ef
mov eax, dword [0x6074a0]
push dword [esp + 0x54]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
test esi, esi
je 0x447909
cmp dword [esp + 0x3c], 0
je 0x447909
mov eax, dword [0x6074a0]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0xb0]
movzx ebx, byte [esp + 0xb5]
test ecx, ecx
je 0x447aaa
cmp ecx, dword [esp]
jae 0x447ab7
mov esi, dword [esp + 8]
cmp byte [esi + ecx], 0xc0
jge 0x447ac1
jmp 0x447d09
lea edi, [edx - 1]
cmp edi, eax
mov dword [esp + 0x30], edi
jae 0x447d82
mov edx, dword [esp + 8]
mov ecx, eax
neg ecx
mov dword [esp + 0x5c], ecx
sub edx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x58], edx
add eax, edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 8]
xor edx, edx
mov esi, 1
movzx ecx, byte [eax + ebx]
mov eax, 1
shld edx, eax, cl
shl esi, cl
test cl, 0x20
mov eax, 0
cmovne edx, esi
cmovne esi, eax
and edx, dword [esp + 0x1c]
and esi, dword [esp + 0x20]
or esi, edx
je 0x4479b0
mov esi, dword [esp + 0x10]
jmp 0x4479fe
mov eax, dword [esp + 0x5c]
lea ecx, [eax + ebx]
cmp ecx, dword [esp]
jae 0x44787d
mov eax, dword [esp + 0x58]
xor edx, edx
mov esi, 1
movzx ecx, byte [eax + ebx]
mov eax, 1
sub ebx, dword [esp + 4]
shld edx, eax, cl
shl esi, cl
test cl, 0x20
mov eax, 0
cmovne edx, esi
cmovne esi, eax
and edx, dword [esp + 0x1c]
and esi, dword [esp + 0x20]
or esi, edx
je 0x4479b0
mov eax, dword [esp + 4]
lea esi, [eax + ebx]
lea ecx, [edi + ebx]
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], esi
mov dword [esp + 0x38], ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
sub edx, 1
jb 0x447a4e
cmp ecx, dword [esp]
jae 0x447d5b
movzx eax, byte [edi]
mov ebx, dword [esp + 8]
dec esi
dec edi
mov byte [esp + 0x14], al
movzx eax, byte [esp + 0x14]
cmp al, byte [ebx + ecx]
mov ebx, dword [esp + 0x38]
lea ecx, [ecx - 1]
je 0x447a20
jmp 0x447a8e
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x18]
lea ecx, [eax + ebx]
mov edx, edi
nop dword [eax + eax]
cmp dword [esp + 0x2c], edx
je 0x447b29
lea esi, [ebx + edx]
cmp esi, dword [esp]
jae 0x447d7a
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + edx]
cmp al, byte [ecx + edx]
lea edx, [edx + 1]
je 0x447a60
mov esi, dword [esp + 0x10]
sub esi, dword [esp + 0x34]
mov ebx, esi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x10], esi
sub ebx, dword [esp + 4]
cmp ebx, dword [esp]
jb 0x44796f
jmp 0x44787d
mov eax, ebx
xor ebx, ebx
test al, al
jne 0x447b29
jmp 0x44787d
mov esi, dword [esp + 8]
jne 0x447d09
movzx eax, byte [esi + ecx - 1]
test al, al
jns 0x447b1f
mov byte [esp + 4], bl
movzx ebx, byte [esi + ecx - 2]
cmp bl, 0xbf
jg 0x447afc
movzx edx, byte [esi + ecx - 3]
cmp dl, 0xbf
mov dword [esp + 0xc], edx
jg 0x447b01
movzx esi, byte [esi + ecx - 4]
mov edi, dword [esp + 0xc]
and esi, 7
and edi, 0x3f
shl esi, 6
or edi, esi
jmp 0x447b08
and ebx, 0x1f
jmp 0x447b12
mov edi, dword [esp + 0xc]
and edi, 0xf
mov esi, edi
and ebx, 0x3f
shl esi, 6
or ebx, esi
shl ebx, 6
and eax, 0x3f
or eax, ebx
movzx ebx, byte [esp + 4]
test bl, bl
je 0x447cc4
mov ebx, ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
lea eax, [esp + 0xb0]
push eax
call fcn.0053b6c0
add esp, 0xc
mov edi, dword [esp + 0xa8]
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0xb0]
test edi, edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], eax
cmove edi, eax
test esi, esi
je 0x447bb5
setns al
js 0x447f27
mov byte [esp], al
mov eax, dword [0x6074b4]
movzx eax, byte [eax]
mov eax, dword [0x6074a0]
mov eax, dword [eax]
test eax, eax
jne 0x447b95
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x447ba2
mov ecx, dword [0x6074a0]
mov dword [ecx], eax
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
jne 0x447bba
movzx eax, byte [esp]
push esi
push eax
call fcn.0041a8c0
add esp, 8
jmp 0x447f33
mov eax, 1
push esi
push edi
push eax
mov dword [esp + 0xc], esi
mov esi, eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov edx, dword [esp]
mov ecx, dword [esp + 0xc]
test ebx, ebx
mov dword [esp + 0x9c], esi
mov dword [esp + 4], esi
mov dword [esp + 0xa0], edx
mov dword [esp + 0xa4], edx
je 0x447c19
cmp ebx, edx
jae 0x447c17
mov eax, dword [esp + 4]
cmp byte [eax + ebx], 0xbf
jg 0x447c19
push 0x5a81b8
push ebx
push 0
push edx
push dword [esp + 0x14]
call fcn.004297c0
add esp, 0x14
jmp 0x447f33
jne 0x447bfd
test ecx, ecx
je 0x447c33
cmp dword [esp + 0x14], 0
je 0x447c33
mov eax, dword [0x6074a0]
push ecx
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
test ebx, ebx
je 0x447c86
setns al
js 0x447f2e
mov byte [esp + 0xc], al
mov eax, dword [0x6074b4]
mov edi, dword [0x6074a0]
movzx eax, byte [eax]
mov eax, dword [edi]
test eax, eax
jne 0x447c63
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x447c72
mov dword [edi], eax
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov edi, eax
test eax, eax
jne 0x447c8b
movzx eax, byte [esp + 0xc]
push ebx
push eax
call fcn.0041a8c0
add esp, 8
jmp 0x447f33
mov edi, 1
push ebx
mov esi, dword [esp + 8]
push esi
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp dword [esp], 0
mov eax, dword [esp + 0x40]
mov dword [eax], edi
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
je 0x447887
mov eax, dword [0x6074a0]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
jmp 0x447887
cmp eax, 0x110000
je 0x44787d
mov ebx, 0xffffffff
cmp eax, 0x80
jb 0x447cf4
mov ebx, 0xfffffffe
cmp eax, 0x800
jb 0x447cf4
xor ebx, ebx
cmp eax, 0x10000
setb bl
or ebx, 0xfffffffc
mov edx, dword [esp + 8]
add ebx, ecx
je 0x447d26
cmp ebx, dword [esp]
jae 0x447d2d
cmp byte [edx + ebx], 0xc0
jge 0x447d2f
mov ecx, ebx
push 0x5a5764
push ecx
push 0
push dword [esp + 0xc]
push dword [esp + 0x18]
call fcn.004297c0
add esp, 0x14
jmp 0x447f33
xor ebx, ebx
jmp 0x447b29
jne 0x447d07
cmp byte [edx + ebx - 1], 0
jns 0x447b29
cmp byte [edx + ebx - 2], 0xbf
jmp 0x447b29
mov edx, dword [esp + 4]
mov esi, 0x5a5540
jmp 0x447f1a
mov esi, 0x5a5550
mov ecx, edx
jmp 0x447d60
mov esi, 0x5a5550
mov edx, dword [esp]
jmp 0x447f1a
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 4]
mov esi, 0x5a5520
jmp 0x447f1a
mov edx, dword [esp]
jmp 0x447f0c
cmp dword [esp + 0x18], 0
je 0x447e1d
mov eax, dword [esp + 8]
xor edx, edx
mov esi, 1
xor edi, edi
movzx ecx, byte [eax + ebx]
mov eax, 1
shld edx, eax, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
cmovne esi, edi
and edx, dword [esp + 0x1c]
and esi, dword [esp + 0x20]
or esi, edx
mov esi, 0x5a5540
jne 0x447e10
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x10]
add eax, eax
sub ebx, eax
cmp ebx, dword [esp]
jae 0x44787d
mov eax, dword [esp + 8]
mov ecx, ebx
xor edx, edx
mov edi, 1
movzx ecx, byte [eax + ecx]
mov eax, 1
shld edx, eax, cl
shl edi, cl
test cl, 0x20
mov eax, 0
cmovne edx, edi
cmovne edi, eax
sub ebx, dword [esp + 4]
and edx, dword [esp + 0x1c]
and edi, dword [esp + 0x20]
or edi, edx
je 0x447dce
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 4]
jmp 0x447f1a
mov eax, dword [esp + 4]
mov edx, dword [esp + 8]
mov ecx, ebx
mov edi, eax
sub edx, eax
neg edi
mov eax, edx
mov dword [esp + 0x14], edx
mov eax, dword [esp + 8]
mov ebx, ecx
xor edx, edx
movzx ecx, byte [eax + ecx]
mov eax, 1
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edx, eax
cmovne eax, ecx
and edx, dword [esp + 0x1c]
and eax, dword [esp + 0x20]
or eax, edx
jne 0x447eaf
mov esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [edi + esi]
cmp eax, dword [esp]
jae 0x44787d
movzx ecx, byte [ebx + esi]
xor edx, edx
mov eax, 1
sub esi, dword [esp + 4]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edx, eax
cmovne eax, ecx
and edx, dword [esp + 0x1c]
and eax, dword [esp + 0x20]
or eax, edx
je 0x447e69
mov eax, dword [esp + 4]
mov ebx, esi
add eax, esi
mov dword [esp + 0x10], eax
mov edx, dword [esp]
mov eax, dword [esp + 8]
xor ecx, ecx
mov esi, ebx
sub edx, ebx
lea esi, [eax + ebx]
cmovb edx, ecx
cmp dword [esp + 0x2c], ecx
je 0x447b29
cmp edx, ecx
je 0x447f05
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + ecx]
cmp al, byte [esi + ecx]
lea ecx, [ecx + 1]
je 0x447ec2
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 0x34]
mov dword [esp + 0x10], ecx
sub ecx, dword [esp + 4]
cmp ecx, dword [esp]
jb 0x447e33
jmp 0x44787d
call fcn.0041a880
jmp 0x447f33
mov edx, dword [esp]
mov edi, dword [esp + 0x18]
add ebx, edi
mov esi, 0x5a5530
cmp edx, ebx
cmova ebx, edx
mov ecx, ebx
push esi
push edx
push ecx
call fcn.00425270
add esp, 0xc
jmp 0x447f33
call fcn.0041a880
jmp 0x447f33
call fcn.0041a880
ud2