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

Disassembly:
sub esp, 0x78
mov eax, ecx
mov dword [esp + 0x18], edx
push ebx
mov dword [esp + 0x20], eax
xor ecx, ecx
xorps xmm0, xmm0
mov eax, dword [eax]
push ebp
push esi
mov esi, ecx
movlpd qword [esp + 0x7c], xmm0
mov eax, dword [eax]
push edi
mov dword [esp + 0x48], eax
cmp word [esp + 0x94], cx
je 0x45b69e
test byte [eax + 0x3c], 0x80
jne 0x45bd4e
movzx eax, word [edx]
mov dword [esp + 0x18], eax
cmp eax, 0x3f
ja 0x45bd4e
movzx eax, ax
xor edx, edx
add eax, ecx
mov ebp, dword [esp + 0x84]
mov edi, dword [esp + 0x80]
xor ecx, ecx
bts ecx, eax
movlpd qword [esp + 0x78], xmm0
cmp eax, 0x20
movlpd qword [esp + 0x68], xmm0
lea ebx, [edx + 1]
mov dword [esp + 0x14], ebp
cmovae edx, ecx
mov dword [esp + 0x20], ebx
xor ecx, edx
mov dword [esp + 0x1c], edi
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov dword [esp + 0x74], ecx
adc edx, 0xffffffff
xor eax, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
cmp ebp, edx
ja 0x45bced
jb 0x45b737
cmp edi, ecx
jae 0x45bcef
movzx eax, word [esp + 0x94]
cmp dword [esp + 0x30], eax
jg 0x45bced
mov edx, dword [esp + 0x30]
test edx, edx
jle 0x45b767
mov ebp, dword [esp + 0x40]
or ebp, dword [esi + 8]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x44]
or ebp, dword [esi + 0xc]
mov dword [esp + 0x44], ebp
cmp edx, eax
jge 0x45b77a
mov eax, dword [esp + 0x8c]
mov eax, dword [eax + 0x18]
mov ebp, dword [eax + edx*4]
jmp 0x45b781
mov ebp, dword [esp + 0x98]
mov edx, dword [ebp + 0x24]
mov dword [esp + 0x64], ebp
test edx, 0x400
jne 0x45bcfb
movzx eax, byte [ebp + 0x10]
mov esi, dword [esp + 0x18]
imul ecx, eax, 0x50
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
mov eax, dword [ecx + eax + 0x38]
mov dword [esp + 0x34], eax
xor eax, eax
movzx ecx, si
mov dword [esp + 0x58], eax
test ecx, ecx
je 0x45b8e1
mov edx, dword [esp + 0x14]
xor ecx, ecx
mov ebp, ecx
mov ebx, esi
add eax, ecx
xor esi, esi
bts esi, eax
xor edi, edi
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
mov ecx, esi
cmovae edi, esi
and ecx, dword [esp + 0x1c]
mov eax, edi
and eax, edx
or ecx, eax
jne 0x45b8bc
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + ebp]
call fcn.00436cca
mov ebx, eax
cmp byte [ebx], 0x9a
jne 0x45b8b8
mov eax, dword [esp + 0x34]
cmp dword [ebx + 0x1c], eax
jne 0x45b8b8
mov ecx, dword [esp + 0x40]
xor eax, eax
mov edx, dword [esp + 0x34]
not ecx
push eax
mov eax, dword [esp + 0x48]
push 0x182
not eax
push eax
movsx eax, word [ebx + 0x20]
push ecx
mov ecx, dword [esp + 0x3c]
push eax
lea ecx, [ecx + 0x148]
call fcn.00458e73
add esp, 0x14
mov dword [esp + 0x68], eax
test eax, eax
je 0x45b8b4
test byte [eax + 0x12], 0x82
je 0x45b8ac
xor eax, eax
cmp word [ebx + 0x20], ax
jl 0x45b8ac
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x2c]
mov edx, dword [edx + ebp]
mov ecx, dword [eax]
call fcn.00436cf2
test eax, eax
jne 0x45b880
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 8]
mov ebx, dword [eax]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x68]
mov ecx, dword [eax]
mov edx, dword [edx]
call fcn.00436cf2
test eax, eax
jne 0x45b89e
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 8]
push dword [eax]
push ebx
call fcn.00415e09
pop ecx
pop ecx
test eax, eax
jne 0x45b8b4
or dword [esp + 0x1c], esi
or dword [esp + 0x14], edi
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
add ebp, 0x18
inc eax
movzx ecx, bx
push 0
cmp eax, ecx
mov dword [esp + 0x5c], eax
pop ecx
jl 0x45b7c9
mov ebp, dword [esp + 0x64]
mov ebx, dword [esp + 0x20]
mov edx, dword [ebp + 0x24]
test edx, 0x1000
jne 0x45bbf0
test edx, 0x100
je 0x45b902
xor edx, edx
xor eax, eax
mov esi, edx
mov dword [esp + 0x68], edx
inc eax
jmp 0x45b930
mov esi, dword [ebp + 0x1c]
test esi, esi
je 0x45bd4e
test byte [esi + 0x38], 4
jne 0x45bd4e
cmp byte [esi + 0x36], 0
movzx eax, word [esi + 0x32]
setne bl
mov dword [esp + 0x68], eax
movzx eax, word [esi + 0x34]
xor edx, edx
mov dword [esp + 0x20], ebx
movzx eax, ax
mov cl, dl
mov byte [esp + 0x13], dl
mov edi, edx
mov byte [esp + 0x12], dl
mov dword [esp + 0x58], ecx
mov dword [esp + 0x80], eax
test eax, eax
je 0x45bbf2
mov dword [esp + 0x54], edx
movzx ecx, word [ebp + 0x18]
cmp edi, ecx
jge 0x45b98e
cmp word [ebp + 0x2a], dx
jne 0x45b98e
mov eax, dword [ebp + 0x30]
mov eax, dword [eax + edi*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x45b98e
test eax, 0x100
movzx eax, bl
push 0
pop ecx
cmove ecx, eax
mov bl, cl
mov dword [esp + 0x20], ebx
jmp 0x45bbbf
test esi, esi
je 0x45b9b7
mov eax, dword [esi + 4]
movsx edx, word [eax + edi*2]
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x24], edx
mov al, byte [edi + eax]
mov byte [esp + 0x11], al
mov eax, dword [esi + 0xc]
movsx eax, word [eax + 0x20]
cmp edx, eax
jne 0x45b9c4
or edx, 0xffffffff
jmp 0x45b9c0
or edx, 0xffffffff
xor eax, eax
mov byte [esp + 0x11], al
mov dword [esp + 0x24], edx
test bl, bl
je 0x45b9ef
test edx, edx
js 0x45b9ef
cmp edi, ecx
jl 0x45b9ef
mov eax, dword [esi + 0xc]
and dword [esp + 0x50], 0
imul ecx, edx, 0x18
movzx ebx, bl
mov eax, dword [eax + 4]
cmp byte [eax + ecx + 0x14], 0
cmove ebx, dword [esp + 0x50]
mov dword [esp + 0x20], ebx
xor eax, eax
inc eax
xor ecx, ecx
mov bl, al
mov dword [esp + 0x38], ecx
mov eax, ecx
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0x18]
movzx ecx, dx
cmp eax, ecx
jge 0x45bb01
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
mov dword [esp + 0x50], edx
cmp eax, 0x40
mov dword [esp + 0x78], ecx
mov eax, edx
mov edx, dword [esp + 0x24]
cmovae eax, ecx
and ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], eax
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x45baeb
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x38]
mov ecx, dword [ecx + eax]
call fcn.00436cca
mov ecx, eax
mov eax, dword [esp + 0x90]
and eax, 0x300
neg ax
sbb al, al
and bl, al
mov bh, bl
cmp edx, 0xffffffff
jl 0x45ba8d
cmp byte [ecx], 0x9a
jne 0x45baeb
mov eax, dword [esp + 0x34]
cmp dword [ecx + 0x1c], eax
jne 0x45baeb
movsx eax, word [ecx + 0x20]
cmp eax, edx
jne 0x45baeb
jmp 0x45baac
mov eax, dword [esi + 0x28]
push dword [esp + 0x34]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x58]
mov edx, dword [edx + eax]
call fcn.0043a42f
pop ecx
test eax, eax
jne 0x45baeb
mov edx, dword [esp + 0x24]
test edx, edx
js 0x45bb1d
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x38]
mov edx, dword [edx + eax]
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
call fcn.00436cf2
mov ecx, eax
test ecx, ecx
jne 0x45bad6
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 8]
mov eax, dword [esi + 0x20]
mov bl, bh
push dword [eax + edi*4]
push dword [ecx]
call fcn.00415e09
pop ecx
pop ecx
test eax, eax
je 0x45bb1d
mov eax, dword [esp + 0x4c]
add dword [esp + 0x38], 0x18
inc eax
mov dword [esp + 0x4c], eax
test bl, bl
jne 0x45ba00
test edi, edi
je 0x45bb14
mov eax, dword [esp + 0x68]
movzx eax, ax
cmp edi, eax
jge 0x45bbd4
xor edx, edx
mov al, dl
jmp 0x45bbda
xor eax, eax
inc eax
test dword [esp + 0x90], 0x100
mov bl, al
jne 0x45bb96
imul ecx, dword [esp + 0x4c], 0x18
cmp byte [esp + 0x13], 0
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 4]
mov al, byte [ecx + eax + 0xc]
je 0x45bb58
mov cl, byte [esp + 0x11]
xor cl, byte [esp + 0x12]
cmp cl, al
sete bl
xor eax, eax
inc eax
jmp 0x45bb8e
xor al, byte [esp + 0x11]
mov byte [esp + 0x12], al
je 0x45bb87
mov eax, dword [esp + 0x30]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0x9c]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
xor eax, eax
inc eax
mov byte [esp + 0x13], al
test bl, bl
je 0x45bb01
mov edx, dword [esp + 0x58]
cmp dword [esp + 0x24], 0
mov ebx, dword [esp + 0x20]
movzx edx, dl
cmovl edx, eax
mov eax, dword [esp + 0x78]
or dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
or dword [esp + 0x14], eax
mov dword [esp + 0x58], edx
xor edx, edx
add dword [esp + 0x54], 0x18
inc edi
cmp edi, dword [esp + 0x80]
jl 0x45b956
jmp 0x45bbd6
xor edx, edx
mov eax, dword [esp + 0x20]
cmp byte [esp + 0x58], 0
push 1
movzx eax, al
pop ecx
cmovne eax, ecx
mov bl, al
mov dword [esp + 0x20], ebx
jmp 0x45bbf2
xor edx, edx
test bl, bl
je 0x45bcc9
mov eax, dword [esp + 0x5c]
mov ebx, edx
or eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x60]
or eax, dword [ebp + 0xc]
mov dword [esp + 0x60], eax
movzx eax, cx
test eax, eax
je 0x45bcc5
mov ebp, edx
mov edx, dword [esp + 0x14]
xor esi, esi
mov eax, ebx
bts esi, eax
xor edi, edi
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
mov ecx, esi
cmovae edi, esi
and ecx, dword [esp + 0x1c]
mov eax, edi
and eax, edx
or ecx, eax
jne 0x45bcb2
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
add ecx, 0x44
mov eax, dword [eax + 4]
mov eax, dword [eax + ebp]
mov edx, eax
mov dword [esp + 0x80], eax
call fcn.004588a4
mov ecx, edx
mov dword [esp + 0x78], eax
or eax, ecx
mov dword [esp + 0x68], ecx
jne 0x45bc8e
mov ecx, dword [esp + 0x80]
lea edx, [eax + 1]
push eax
call fcn.00437e9b
pop ecx
test eax, eax
je 0x45bcae
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
not ecx
and ecx, dword [esp + 0x78]
not eax
and eax, dword [esp + 0x68]
or ecx, eax
jne 0x45bcae
or dword [esp + 0x1c], esi
or dword [esp + 0x14], edi
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
inc ebx
movzx eax, cx
add ebp, 0x18
cmp ebx, eax
jl 0x45bc27
mov ebx, dword [esp + 0x20]
inc dword [esp + 0x30]
mov esi, dword [esp + 0x64]
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x3c]
test bl, bl
jne 0x45b725
mov ebp, dword [esp + 0x14]
cmp edi, ecx
jne 0x45bd0b
cmp ebp, edx
jne 0x45bd0b
mov al, byte [esp + 0x18]
jmp 0x45bd50
cmp byte [ebp + 0x1d], 0
mov edx, dword [esp + 0x3c]
je 0x45bce9
mov edi, ecx
mov ebp, edx
jmp 0x45bced
test bl, bl
jne 0x45bd5c
mov ecx, dword [esp + 0x18]
movzx eax, cx
lea ebx, [eax - 1]
jmp 0x45bd4a
xor ecx, ecx
xor edx, edx
lea eax, [ecx + ebx]
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov eax, ecx
adc edx, 0xffffffff
and eax, edi
mov esi, edx
and esi, ebp
cmp eax, ecx
jne 0x45bd49
cmp esi, edx
je 0x45bd58
dec ebx
test ebx, ebx
jg 0x45bd1b
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov al, bl
jmp 0x45bd50
or al, 0xff
jmp 0x45bd50