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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
push ebx
push esi
push edi
mov edi, ecx
lea ecx, [esp + 0x58]
mov edx, edi
call fcn.00453abb
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
lea ebx, [ebx]
test esi, esi
je 0x452ab5
mov edx, dword [esi + 0x10]
mov dword [esp + 0x64], esi
mov ecx, dword [edx + 0xa0]
cmp esi, ecx
jb 0x452a20
mov eax, dword [edx + 0xe4]
lea eax, [eax + eax*4]
shl eax, 4
add eax, ecx
cmp esi, eax
ja 0x452a20
sub esi, ecx
sar esi, 4
imul eax, esi, 0xcccccccd
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x98]
lea esi, [eax + ecx*4]
mov dword [esp + 0x60], esi
mov edi, edi
test ebx, ebx
je 0x452a69
mov ebx, dword [ebx + 0x1c]
mov dword [esp + 0x90], ebx
test ebx, ebx
je 0x452a30
test dword [ebx + 4], 0x800
jne 0x452770
mov eax, ebx
test byte [edi + 0x14c], 0x40
mov esi, dword [esp + 0x64]
mov dword [esp + 0x98], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], esi
je 0x4527c1
test dword [edi + 0xaf0], 0x10000
je 0x4528c8
test esi, esi
je 0x4528c8
mov ecx, dword [0x5a1508]
mov edx, dword [0x5a1514]
mov eax, dword [esi + 0x14]
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], 0
lea eax, [ecx + edx]
mov dword [esp + 0x28], eax
mov eax, ecx
mov ecx, dword [esi + 0x14]
shr eax, 5
xor eax, ecx
and ecx, 0x7f
shr eax, 7
and eax, edx
mov dword [esp + 0x24], eax
mov eax, 0x1010101
mul ecx
mov dword [esp + 0x18], eax
mov eax, 0x1010101
mul ecx
add dword [esp + 0x18], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x40], eax
nop
mov eax, dword [0x5a1508]
mov ecx, dword [edx + eax]
mov eax, dword [edx + eax + 4]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x40]
xor ecx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
xor eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
not ecx
add dword [esp + 0x14], 0xfefefeff
mov dword [esp + 0x10], eax
not eax
adc dword [esp + 0x10], 0xfefefefe
and dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
and dword [esp + 0x10], eax
and ecx, 0x80808080
and dword [esp + 0x10], 0x80808080
mov dword [esp + 0x14], ecx
mov edi, edi
mov eax, ecx
or eax, dword [esp + 0x10]
jne 0x4ab5e9
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
not ecx
not eax
and ecx, 0x2020202
and eax, 0xfe020202
shld eax, ecx, 6
and eax, dword [esp + 0x24]
shl ecx, 6
and ecx, dword [esp + 0x34]
or ecx, eax
je 0x4ab645
mov ecx, dword [esp + 0x28]
mov eax, ecx
cmp eax, ecx
jne 0x4ab678
mov esi, dword [esp + 0x60]
mov dword [esp + 0x28], 0
test byte [esi + 0x10], 0x40
jne 0x452c4b
mov edx, dword [esi]
xor ecx, ecx
mov dword [esp + 0x14], edx
jmp 0x4528f0
mov esi, dword [esp + 0x1c]
test edx, edx
je 0x452720
cmp ecx, dword [edx + 4]
je 0x4529f8
mov esi, dword [esp + 0x1c]
jae 0x452720
lea esi, [ecx*2 + 1]
add esi, ecx
inc ecx
mov dword [esp + 0x10], ecx
lea esi, [edx + esi*8]
test esi, esi
je 0x4ab7f3
test dword [esi + 0x10], 0x4000000
je 0x4529a0
mov edx, dword [esp + 0x60]
mov eax, dword [esi]
mov dword [esp + 0x18], eax
test byte [edx + 0x10], 0x40
mov edx, dword [esp + 0x14]
jne 0x452c92
mov edx, 0xa64e
cmp word [edi + 0x40], dx
mov edx, dword [esp + 0x14]
je 0x4ab6a3
test byte [eax], 1
je 0x4529a0
cmp dword [eax + 0x10], 0
mov edx, dword [esp + 0x14]
je 0x4529a0
test byte [edi + 0x14c], 0x40
je 0x452984
test dword [edi + 0xaf0], 0x10000
je 0x452a14
mov edx, dword [eax + 0x10]
mov dword [esi], edx
mov eax, dword [eax + 8]
and dword [esi + 0x10], 0xfbffffff
mov edx, dword [esp + 0x14]
mov dword [esi + 8], eax
jl 0x4ab732
test byte [edi + 0x14c], 0x40
je 0x4529b9
test dword [edi + 0xaf0], 0x10000
je 0x4528f0
test dword [esi + 0x10], 0x6000000
sete cl
test byte [edi + 0x150], 0x10
setne al
test al, cl
mov ecx, dword [esp + 0x10]
je 0x4528f0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], eax
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 4]
cmp eax, dword [0x5a2ee8]
jne 0x4528f0
jmp 0x4ab745
mov edx, dword [edx]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
test edx, edx
je 0x452720
xor ecx, ecx
cmp ecx, dword [edx + 4]
jmp 0x452905
test byte [eax + 0x1b], 8
je 0x452984
jmp 0x4529a0
add esi, 0x50
jmp 0x45276a
lea eax, [esp + 0x78]
push eax
call fcn.00452d48
test al, al
je 0x452a78
mov eax, dword [esp + 0x80]
xor ebx, ebx
mov dword [esp + 0x88], fcn.0045253a
mov dword [esp + 0x8c], 0x478d10
mov dword [esp + 0x94], eax
jmp 0x452770
mov eax, dword [esp + 0x94]
mov ebx, dword [eax + 0x10]
jmp 0x45277b
lea eax, [esp + 0x68]
push eax
call fcn.00452f9f
test al, al
je 0x452c16
mov eax, dword [esp + 0x70]
mov dword [esp + 0x78], fcn.00452d48
mov dword [esp + 0x7c], 0x478d10
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], eax
jmp 0x452a30
mov eax, dword [0x5a3c60]
lea ecx, [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [0x5a3c64]
mov dword [esp + 0x3c], eax
call fcn.00470e6c
mov eax, dword [0x5a3c6c]
add eax, dword [0x5a3c60]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
cmp esi, eax
je 0x452c24
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ecx
mov eax, dword [eax + 0x10]
test al, 0x40
jne 0x452b69
inc esi
add ebx, 8
cmp byte [esi], 0xff
jl 0x452b12
mov eax, dword [esp + 0x2c]
jmp 0x452ae7
mov ecx, dword [esi + 4]
mov edx, ecx
mov eax, dword [esi]
not ecx
mov dword [esp + 0x1c], eax
not eax
shrd dword [esp + 0x1c], edx, 7
and dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
shr edx, 7
or eax, 0xfefefefe
and edx, ecx
mov dword [esp + 0x38], 0
or edx, 0xfefefe
add eax, 1
adc edx, 0
test eax, eax
jne 0x452b64
bsf eax, edx
add eax, 0x20
add eax, 7
sar eax, 3
add esi, eax
lea ebx, [ebx + eax*8]
jmp 0x452b07
bsf eax, eax
jmp 0x452b57
test al, 0x10
je 0x4ab7fc
mov eax, dword [0x5a4d84]
mov edx, dword [eax]
add edx, dword [ecx + 4]
mov ecx, edx
call fcn.004532d5
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov dword [esp + 0x44], fcn.00452d69
mov dword [esp + 0x48], 0x478d10
mov ecx, dword [ecx]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
lea eax, [esp + 0x44]
push eax
call fcn.00452d69
test al, al
je 0x452b03
mov eax, dword [esp + 0x4c]
test dword [eax + 0x10], 0x10000000
mov edx, dword [eax]
jne 0x452c0a
push edx
mov ecx, edi
call fcn.0044d88b
mov edx, dword [esp + 0x4c]
mov ecx, dword [edx]
mov ecx, dword [ecx + 4]
add ecx, dword [eax]
mov eax, dword [esp + 0x28]
cmp byte [eax], 0x5f
sete dl
call fcn.00452db1
push eax
push dword [esp + 0x2c]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcmp]
add esp, 8
test eax, eax
jne 0x452bb0
jmp 0x4ab812
mov eax, dword [0x5a4d84]
mov ecx, dword [eax]
add ecx, dword [edx + 4]
jmp 0x452be4
mov ebx, dword [esp + 0x90]
xor eax, eax
jmp 0x452795
movzx eax, word [edi + 0x40]
mov ecx, 0x3a64
cmp ax, cx
je 0x4ab84c
mov ecx, 0xa64e
cmp ax, cx
je 0x4ab858
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [esp + 0x30]
lea eax, [esp + 0x34]
mov ecx, 0x5a1860
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.0047656e
mov eax, dword [0x5a1860]
add eax, dword [0x5a186c]
cmp dword [esp + 0xa0], eax
je 0x452ce8
mov eax, dword [esp + 0xa4]
mov ecx, dword [eax + 4]
call fcn.004532d5
mov dword [esp + 0x28], eax
jmp 0x4528de
push eax
mov ecx, edi
call fcn.0044d88b
mov ecx, dword [esp + 0x18]
xor dl, dl
mov ecx, dword [ecx + 4]
add ecx, dword [eax]
call fcn.00452db1
push eax
push dword [esp + 0x2c]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcmp]
add esp, 8
test eax, eax
mov eax, dword [esp + 0x18]
je 0x452cc9
mov ecx, dword [esp + 0x10]
jmp 0x452949
push dword [eax + 8]
mov edx, eax
push dword [esp + 0x34]
push ecx
mov ecx, edi
call fcn.00478832
mov eax, dword [esp + 0x60]
and dword [eax + 0x10], 0xffffffbf
mov eax, dword [esp + 0x18]
jmp 0x452cc0
xor ecx, ecx
call fcn.0047dc27
mov dword [esp + 0x2c], 0
test ecx, ecx
jne 0x4ab601
mov eax, dword [esp + 0x10]
bsf eax, eax
add eax, 0x20
jmp 0x4ab604
bsf eax, ecx
mov ecx, dword [0x5a150c]
mov esi, dword [esp + 0x38]
sar eax, 3
mov dword [esp + 0x2c], eax
add eax, edx
and eax, dword [0x5a1514]
cmp dword [ecx + eax*4], esi
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x14]
je 0x4ab65d
mov eax, dword [esp + 0x10]
add ecx, 0xffffffff
adc eax, 0xffffffff
and dword [esp + 0x14], ecx
and dword [esp + 0x10], eax
mov ecx, dword [esp + 0x14]
jmp 0x452880
mov eax, dword [esp + 0x20]
add eax, 8
add edx, eax
mov dword [esp + 0x20], eax
and edx, dword [0x5a1514]
jmp 0x452820
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
add eax, edx
and eax, dword [0x5a1514]
add eax, dword [0x5a1508]
jmp 0x4528c0
mov edx, 0xc
mov ecx, 0x5a3f3c
call fcn.0044a45f
mov ecx, dword [0x5a3f38]
mov dword [0x5a3f38], eax
mov dword [eax], ecx
mov dword [eax + 4], esi
mov dword [eax + 8], 1
jmp 0x4528c8
test byte [edi + 0x14c], 0x40
je 0x4ab6c2
test dword [edi + 0xaf0], 0x10000
jne 0x4ab6c2
test byte [eax + 0x1b], 8
jne 0x45295c
cmp dword [edi + 0x9e4], 0
je 0x45295c
lea ecx, [esp + 0xa8]
push ecx
mov ecx, dword [edi + 0x9e4]
push eax
call fcn.00504e72
test eax, eax
mov eax, dword [esp + 0x18]
je 0x4ab70b
mov edx, dword [eax]
test edx, 0x100
je 0x4ab718
mov ecx, dword [esp + 0xa8]
test byte [ecx], 1
je 0x4ab718
mov eax, ecx
mov dword [esp + 0x18], ecx
mov byte [esi + 0x12], 2
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
jmp 0x45295c
mov ecx, dword [esp + 0x10]
test dl, 1
mov edx, dword [esp + 0x14]
je 0x45295c
mov byte [esi + 0x12], 2
jmp 0x45295c
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
or dword [eax + 0x40], 0x20000000
jmp 0x4529a0
mov ecx, dword [esp + 0x20]
call fcn.005010ee
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x4528f0
mov esi, dword [esi]
mov dword [esp + 0x2c], esi
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 4]
cmp eax, dword [0x5a30dc]
je 0x4528f0
mov ecx, dword [esp + 0x20]
call fcn.005010ee
mov ecx, dword [esp + 0x10]
cmp eax, esi
je 0x4528f0
mov eax, dword [esi + 0x40]
and eax, 0xf
cmp al, 5
jne 0x4ab79a
mov eax, dword [esi + 0x48]
mov dword [esp + 0x20], eax
jmp 0x4ab7a2
mov dword [esp + 0x20], 0
mov esi, dword [esp + 0x30]
mov ecx, esi
call fcn.005010ee
mov ecx, dword [esp + 0x10]
cmp eax, dword [esp + 0x20]
jne 0x4528f0
mov ecx, dword [esp + 0x2c]
call fcn.0046fc6a
push 0
push 0
push 0
mov edx, 0xffff
mov ecx, eax
call fcn.0044f418
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
and dword [eax + 0x10], 0x81ffffff
mov dword [eax], esi
mov dword [eax + 8], 0
jmp 0x4528f0
mov esi, dword [esp + 0x1c]
jmp 0x452720
push ecx
mov ecx, edi
call fcn.0044d88b
mov edx, dword [eax]
mov eax, dword [esp + 0x20]
add edx, dword [eax + 4]
jmp 0x452b7b
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x4c]
mov eax, dword [eax + 0x10]
mov edx, dword [ecx]
shr eax, 4
and al, 1
movzx eax, al
push eax
mov eax, dword [ecx + 0x10]
mov ecx, edi
push dword [esp + 0x24]
shr eax, 0x1c
and al, 1
movzx eax, al
push eax
call fcn.0044f3ad
mov eax, dword [esp + 0x24]
and dword [eax + 0x10], 0xffffffbf
jmp 0x452b03
mov ecx, edi
call fcn.0053efd1
mov ecx, 0xa64e
test byte [edi + 0x14c], 0x40
je 0x4ab871
test dword [edi + 0xaf0], 0x10000
je 0x452c44
cmp word [edi + 0x40], cx
sete cl
call fcn.0053ee70
jmp 0x452c44