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

Disassembly:
sub esp, 0xd4
mov eax, dword [0x490004]
xor eax, esp
mov dword [esp + 0xcc], eax
mov eax, dword [ecx]
push ebx
mov ebx, dword [esp + 0xdc]
push ebp
mov eax, dword [eax]
mov dword [esp + 0x44], eax
push esi
xor esi, esi
mov dword [esp + 0x24], edx
mov eax, dword [eax]
mov ebp, esi
push edi
mov edi, dword [ecx + 0xc]
mov dword [esp + 0x2c], ecx
cmp byte [eax + 0x51], 0
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], esi
je 0x453c48
push 7
pop eax
jmp 0x454290
mov eax, dword [edi + 0x24]
test al, 0x20
movzx esi, word [edi + 0x28]
movzx ecx, word [edi + 0x18]
mov dword [esp + 0x48], eax
mov eax, 0x1bf
push 0x18
pop edx
cmove edx, eax
mov dword [esp + 0x44], ecx
movzx eax, word [edi + 0x1a]
mov dword [esp + 0x5c], eax
movzx eax, word [edi + 0x1c]
mov dword [esp + 0x60], eax
movzx eax, word [edi + 0x2a]
mov dword [esp + 0x68], eax
mov eax, dword [edi]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x58], eax
movzx eax, word [edi + 0x16]
mov dword [esp + 0x64], esi
mov esi, eax
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x74], esi
movzx esi, cx
mov ecx, edx
and ecx, 0xffffffc3
mov dword [esp + 0x18], esi
and al, 4
mov eax, dword [esp + 0x28]
cmove ecx, edx
push ebx
push ecx
mov ecx, dword [esp + 0x34]
push esi
push dword [eax + 0x2c]
mov edx, dword [ecx + 4]
lea ecx, [esp + 0x88]
call fcn.004526aa
mov esi, eax
add esp, 0x10
xor eax, eax
mov dword [esp + 0x20], esi
mov word [edi + 0x12], ax
mov eax, dword [ebx + 8]
movzx eax, word [eax]
mov ecx, eax
mov dword [esp + 0x70], eax
call fcn.00452955
movzx eax, ax
mov edx, 0x100
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x34], eax
test esi, esi
je 0x45417d
movzx eax, word [esi + 0xc]
xor ecx, ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x14], ecx
cmp ax, dx
jne 0x453d3a
mov edx, dword [esp + 0x18]
mov ecx, ebx
call fcn.0045286a
test eax, eax
jne 0x45415b
mov edx, 0x100
mov ecx, dword [edi + 8]
mov eax, dword [edi + 0xc]
and ecx, dword [esi + 0x20]
and eax, dword [esi + 0x24]
or ecx, eax
jne 0x45415b
test word [esi + 0xa], dx
je 0x453d61
push 0x10
pop eax
cmp word [esi + 0xc], ax
je 0x45415b
mov eax, dword [esp + 0x28]
test byte [eax + 0x24], 8
je 0x453d77
mov eax, dword [esi]
test byte [eax + 4], 1
je 0x45415b
cmp byte [ebx + 0x36], 0
je 0x453d8d
movzx eax, word [ebx + 0x32]
dec eax
cmp dword [esp + 0x18], eax
jne 0x453d8d
push 2
pop ecx
jmp 0x453d90
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x2c]
mov edx, edi
or dword [eax + 0x14], ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
mov dword [edi + 0x24], eax
mov eax, dword [esp + 0x44]
mov word [edi + 0x18], ax
mov eax, dword [esp + 0x5c]
mov word [edi + 0x1a], ax
mov eax, dword [esp + 0x60]
mov word [edi + 0x1c], ax
mov eax, dword [esp + 0x64]
mov word [edi + 0x28], ax
movzx eax, ax
inc eax
push eax
call fcn.0045350f
pop ecx
test eax, eax
jne 0x45417d
movzx ecx, word [edi + 0x28]
mov eax, dword [edi + 0x30]
mov dword [eax + ecx*4], esi
mov ax, word [edi + 0x28]
mov esi, dword [esp + 0x54]
inc ax
mov ecx, dword [edi + 8]
mov word [edi + 0x28], ax
not ecx
movzx ebp, ax
mov eax, dword [esp + 0x20]
or esi, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
and esi, ecx
mov eax, dword [edi + 0xc]
or edx, dword [esp + 0x58]
not eax
and edx, eax
mov dword [edi], esi
mov eax, dword [esp + 0x38]
mov dword [edi + 4], edx
test al, 1
je 0x453eda
mov edx, dword [esp + 0x20]
mov edx, dword [edx]
test dword [edx + 4], 0x800
je 0x453eb5
xor eax, eax
mov dword [esp + 0x14], 0x2e
lea esi, [ebp - 1]
mov ecx, eax
test esi, esi
jle 0x453ed5
mov ebp, dword [edi + 0x30]
mov ebx, dword [esp + 0x14]
mov eax, dword [ebp + ecx*4]
test eax, eax
je 0x453e64
and dword [esp + 0x14], 0
cmp dword [eax], edx
cmove ebx, dword [esp + 0x14]
inc ecx
cmp ecx, esi
jl 0x453e50
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x14]
test byte [ebx + 0x38], 0x80
je 0x453ea4
mov ecx, ebp
call fcn.00452955
mov edx, dword [esp + 0x18]
movsx ecx, ax
mov eax, dword [ebx + 8]
movsx eax, word [eax + edx*2]
add eax, 0xa
add ecx, eax
mov eax, dword [esp + 0x50]
cwde
add eax, ebp
cmp ecx, eax
jl 0x454157
or dword [edi + 0x24], 4
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
jmp 0x453fdb
mov eax, dword [edx + 0x14]
test eax, eax
je 0x453e71
mov eax, dword [eax]
test eax, eax
je 0x453e71
cdq
push edx
push eax
call fcn.00407f89
pop ecx
movsx ebp, ax
pop ecx
mov dword [esp + 0x14], ebp
jmp 0x453e75
push 0x2e
pop ebp
jmp 0x453e75
mov ebp, dword [esp + 0x18]
test al, 0x82
je 0x453f4c
mov eax, dword [ebx + 4]
xor edx, edx
mov ecx, dword [edi + 0x24]
inc edx
or ecx, edx
movsx eax, word [eax + ebp*2]
mov dword [edi + 0x24], ecx
cmp eax, 0xffffffff
je 0x453f38
mov edx, ecx
test eax, eax
js 0x453f43
cmp word [esp + 0x34], 0
jne 0x453f43
movzx esi, word [ebx + 0x32]
lea eax, [esi - 1]
cmp ebp, eax
jne 0x453f43
test byte [ebx + 0x38], 8
jne 0x453f38
xor eax, eax
inc eax
cmp si, ax
jne 0x453f30
cmp byte [ebx + 0x36], 0
je 0x453f30
push 2
pop eax
cmp word [esp + 0x38], ax
je 0x453f38
or edx, 0x10000
jmp 0x453f40
mov edx, ecx
or edx, 0x1000
mov dword [edi + 0x24], edx
mov esi, dword [esp + 0x20]
jmp 0x453fde
mov edx, dword [edi + 0x24]
mov esi, dword [esp + 0x20]
test eax, 0x100
je 0x453f62
or edx, 8
mov dword [edi + 0x24], edx
jmp 0x453fde
mov ecx, dword [esp + 0x4c]
test al, 0x24
mov eax, dword [esp + 0x28]
push esi
push ebp
push ebx
je 0x453fe8
or edx, 0x22
mov dword [edi + 0x24], edx
mov edx, dword [eax + 0x2c]
call fcn.00453a99
mov word [edi + 0x1a], ax
add esp, 0xc
xor eax, eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], eax
mov eax, 0x100
test word [esi + 0xa], ax
je 0x453fdb
mov ecx, dword [esp + 0x3c]
lea eax, [esi + 0x30]
mov dword [esp + 0x1c], eax
mov edx, edi
movzx eax, word [edi + 0x28]
inc eax
push eax
call fcn.0045350f
pop ecx
test eax, eax
jne 0x454179
movzx ecx, word [edi + 0x28]
mov eax, dword [edi + 0x30]
mov edx, dword [esp + 0x1c]
push 0x10
mov dword [eax + ecx*4], edx
inc word [edi + 0x28]
pop eax
or dword [edi + 0x24], eax
xor eax, eax
inc eax
mov word [edi + 0x1c], ax
mov edx, dword [edi + 0x24]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
jmp 0x454020
or edx, 0x12
mov dword [edi + 0x24], edx
mov edx, dword [eax + 0x2c]
call fcn.00453a99
mov edx, dword [edi + 0x24]
add esp, 0xc
mov word [edi + 0x1c], ax
mov eax, esi
mov dword [esp + 0x1c], eax
test dl, 0x20
je 0x45401a
mov eax, dword [edi + 0x30]
movzx ecx, word [edi + 0x28]
mov ecx, dword [eax + ecx*4 - 8]
mov eax, esi
jmp 0x45401c
xor ecx, ecx
mov dword [esp + 0x24], ecx
test dl, 2
je 0x454032
push edi
push eax
push ecx
call fcn.004533e5
add esp, 0xc
jmp 0x454056
inc word [edi + 0x18]
movzx ecx, word [esi + 8]
movzx edx, word [edi + 0x18]
test cx, cx
jg 0x45405c
mov eax, dword [ebx + 4]
xor esi, esi
cmp word [eax + ebp*2], si
jl 0x45405c
sub ecx, dword [esp + 0x14]
add word [edi + 0x16], cx
movzx ebp, word [edi + 0x16]
jmp 0x45408b
mov eax, dword [ebx + 8]
mov cx, word [edi + 0x16]
sub cx, word [eax + edx*2 - 2]
add cx, word [eax + edx*2]
movzx eax, cx
mov word [edi + 0x16], cx
movzx ebp, cx
mov ecx, 0x100
test dword [esp + 0x38], ecx
je 0x45408b
add eax, 0xa
mov word [edi + 0x16], ax
movzx ebp, ax
movsx eax, word [ebx + 0x30]
imul ecx, eax, 0xf
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x10]
movsx esi, word [eax + 0x2e]
mov eax, ecx
cdq
idiv esi
mov ecx, dword [esp + 0x50]
inc eax
add eax, ebp
movzx edx, ax
call fcn.00407f28
test dword [edi + 0x24], 0x140
mov cx, ax
mov word [edi + 0x14], cx
jne 0x4540d4
movzx edx, word [edi + 0x16]
push 0x10
pop eax
add dx, ax
call fcn.00407f28
mov word [edi + 0x14], ax
mov eax, dword [esp + 0x14]
mov edx, edi
mov ecx, dword [esp + 0x34]
movzx esi, word [edi + 0x16]
push dword [esp + 0x70]
movzx ebp, ax
lea eax, [ecx + ebp]
add word [edi + 0x14], ax
lea eax, [esi + ebp]
add eax, ecx
mov ecx, dword [esp + 0x30]
mov word [edi + 0x16], ax
mov ecx, dword [ecx + 4]
call fcn.0045394e
pop ecx
mov ecx, dword [esp + 0x2c]
mov edx, edi
call fcn.00453817
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x24]
test al, 2
movzx edx, cx
mov ecx, esi
cmove edx, ecx
mov word [edi + 0x16], dx
test al, 0x10
jne 0x45414f
mov ax, word [edi + 0x18]
cmp ax, word [ebx + 0x34]
jae 0x45414f
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x28]
add eax, ebp
mov ecx, dword [esp + 0x2c]
push eax
push ebx
call fcn.00453bee
pop ecx
pop ecx
mov eax, dword [esp + 0x40]
mov word [edi + 0x16], ax
mov ebp, dword [esp + 0x30]
lea ecx, [esp + 0x78]
call fcn.00452487
mov esi, eax
mov edx, 0x100
mov dword [esp + 0x20], esi
test ebp, ebp
je 0x453d07
jmp 0x45417d
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x64]
mov dword [edi], eax
mov eax, dword [esp + 0x58]
mov word [edi + 0x1a], cx
mov ecx, dword [esp + 0x60]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov word [edi + 0x1c], cx
mov ecx, dword [esp + 0x68]
mov dword [edi + 0x24], edx
mov edx, dword [esp + 0x40]
mov word [edi + 0x18], ax
mov word [edi + 0x2a], cx
mov word [edi + 0x16], dx
mov word [edi + 0x28], si
cmp ax, cx
jne 0x45428e
mov edx, dword [esp + 0x18]
movzx ecx, word [ebx + 0x32]
lea eax, [edx + 1]
cmp eax, ecx
jae 0x45428e
test byte [ebx + 0x38], 0x40
jne 0x45428e
mov ecx, dword [esp + 0x3c]
mov eax, 0x4000
test word [ecx + 0x4c], ax
jne 0x45428e
mov eax, dword [ebx + 8]
cmp word [eax + edx*2 + 2], 0x2a
jl 0x45428e
movzx eax, si
mov edx, edi
inc eax
push eax
call fcn.0045350f
mov ebp, eax
pop ecx
test ebp, ebp
jne 0x45428e
lfence
inc word [edi + 0x18]
xor edx, edx
movzx ecx, word [edi + 0x28]
mov eax, dword [edi + 0x30]
inc word [edi + 0x2a]
mov dword [eax + ecx*4], edx
inc word [edi + 0x28]
or dword [edi + 0x24], 0x8000
mov esi, dword [ebx + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov ax, word [esi + ecx*2]
sub ax, word [esi + ecx*2 + 2]
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
add esi, 5
movzx eax, ax
sub word [edi + 0x16], ax
add eax, esi
push eax
push ebx
call fcn.00453bee
mov eax, dword [esp + 0x48]
mov word [edi + 0x16], ax
mov eax, dword [esp + 0x4c]
mov word [edi + 0x18], ax
mov eax, dword [esp + 0x70]
pop ecx
mov word [edi + 0x2a], ax
mov eax, dword [esp + 0x4c]
pop ecx
mov dword [edi + 0x24], eax
mov eax, ebp
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004614f6
add esp, 0xd4
ret