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

Disassembly:
push edi
push esi
sub esp, 0x100
mov eax, dword [esp + 0x118]
mov ecx, dword [esp + 0x114]
mov edx, dword [esp + 0x110]
mov esi, dword [esp + 0x10c]
xor edi, edi
mov dword [esp + 0xf8], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf0], edx
mov dword [esp + 0xec], esi
mov eax, dword [0x4aa158]
add eax, 0x3e6e91
mov dword [0x4aa158], eax
mov eax, dword [0x4af4f4]
xor eax, 0xa1d7c7dc
mov dword [0x4af4f4], eax
mov dword [0x4b2298], 0x6576e34
mov eax, dword [esp + 0xf8]
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x78], edi
call fcn.0041f470
cmp eax, 0
jne 0x403bbe
mov dword [esp + 0xfc], 0xfffffff4
jmp 0x405439
mov eax, dword [0x4ab4f8]
mov cx, word [0x4a4044]
movsx edx, cx
and eax, edx
and eax, 0x99916501
mov edx, dword [0x4a7de8]
xor edx, eax
mov dword [0x4a7de8], edx
mov eax, esp
lea edx, [esp + 0x9c]
mov dword [eax + 0x10], edx
lea edx, [esp + 0xa8]
mov dword [eax + 0xc], edx
lea edx, [esp + 0xb4]
mov dword [eax + 8], edx
lea edx, [esp + 0xc0]
mov dword [eax + 4], edx
lea edx, [esp + 0xcc]
mov dword [eax], edx
mov dword [eax + 0x14], 0
call fcn.00445a00
mov eax, dword [0x4adfd4]
mov edx, dword [0x4a9ba4]
and edx, eax
mov dword [0x4a9ba4], edx
mov eax, dword [esp + 0xf8]
mov edx, dword [esp + 0xf4]
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.00425f70
cmp eax, 0
jge 0x403d6f
mov eax, dword [0x4b0578]
mov ecx, eax
inc ecx
mov dword [0x4b0578], ecx
mov ecx, dword [0x4b13c0]
xor eax, ecx
mov ecx, dword [0x4ac12c]
add ecx, eax
mov dword [0x4ac12c], ecx
cmp dword [esp + 0xec], 0
je 0x403cc0
xor eax, eax
mov ecx, dword [esp + 0xec]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x74], eax
call fcn.00450ec0
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403cbb
jmp 0x4053dd
jmp 0x403cc0
mov eax, 0xbcab0d3d
mov cx, word [0x49ff96]
movsx edx, cx
sar edx, 7
cmp eax, edx
jl 0x403d0e
mov ax, word [0x4a2936]
movsx ecx, ax
mov edx, dword [0x4aa4fc]
mov esi, dword [0x4a6a50]
mov edi, esi
inc edi
mov dword [0x4a6a50], edi
imul edx, esi
shl edx, 4
add ecx, edx
mov edx, dword [0x4a6000]
add edx, ecx
mov dword [0x4a6000], edx
cmp dword [esp + 0xf0], 0
je 0x403d50
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00425d30
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403d4b
jmp 0x4053dd
jmp 0x403d50
mov eax, dword [0x4a9a98]
xor eax, 0x58620740
mov dword [0x4a9a98], eax
mov dword [esp + 0xfc], 0
jmp 0x405439
mov eax, dword [0x4b23f0]
imul eax, eax, 0xc0b2d1e6
cmp eax, 0x203a20
jg 0x403da8
mov eax, dword [0x4b0db0]
shr eax, 4
xor eax, 0x3baa
mov cx, word [0x49e318]
mov dx, cx
sub edx, eax
mov cx, dx
mov word [0x49e318], cx
lea eax, [esp + 0xcc]
mov ecx, dword [esp + 0xf4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00425d30
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403dd7
jmp 0x4053dd
mov ax, word [0x4a0764]
movsx ecx, ax
add ecx, 0x4a31ddcb
and ecx, 0x3afc9fcd
mov edx, dword [0x4a5914]
mov esi, edx
inc esi
mov dword [0x4a5914], esi
or edx, 0xfc13f943
cmp ecx, edx
je 0x403e2c
mov ax, word [0x4a4952]
movsx ecx, ax
shl ecx, 5
add ecx, 0xceb6f49f
mov edx, dword [0x4a6228]
sar edx, 6
sub ecx, edx
mov dword [0x4ab610], ecx
lea eax, [esp + 0xc0]
mov ecx, dword [esp + 0xf8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00425d30
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403e5b
jmp 0x4053dd
mov eax, 0x20634ae8
mov ecx, dword [0x4af00c]
mov edx, ecx
inc edx
mov dword [0x4af00c], edx
and ecx, 0x22a
mov si, word [0x4a2138]
mov dx, si
or edx, ecx
mov si, dx
mov word [0x4a2138], si
mov dword [esp + 0xc0], 1
mov dword [esp + 0xcc], 1
mov ecx, dword [0x4a4d78]
mov edx, ecx
inc edx
mov dword [0x4a4d78], edx
imul ecx, ecx, 0x9474959
cmp eax, ecx
jle 0x403f12
mov eax, 0xae6424c9
mov ecx, dword [0x4a795c]
mov edx, dword [0x4a9a24]
mov esi, edx
inc esi
mov dword [0x4a9a24], esi
imul edx, edx, 0x76e71601
xor ecx, edx
cmp eax, ecx
jg 0x403f0d
mov ax, word [0x4a1f6a]
mov cx, ax
mov edx, dword [0x4af32c]
add ecx, edx
mov ax, word [0x4a2234]
mov dx, ax
xor edx, ecx
mov ax, dx
mov word [0x4a2234], ax
jmp 0x403f12
lea eax, [esp + 0xb4]
mov ecx, dword [esp + 0xf4]
mov ecx, dword [ecx + 4]
add ecx, 2
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0041be20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403f47
jmp 0x4053dd
mov eax, dword [0x4af40c]
add eax, 0xddad0750
mov ecx, dword [0x4a9e44]
inc ecx
mov dword [0x4a9e44], ecx
cmp eax, ecx
jge 0x403fc2
mov eax, dword [0x4aadf8]
add eax, 0xb77fc5ef
cmp eax, 0xd1328796
jle 0x403f97
mov eax, dword [0x4aaa4c]
mov ecx, dword [0x4abe28]
xor eax, ecx
xor eax, 0x5d2b37c
mov dword [0x4abe28], eax
jmp 0x403fbd
mov eax, 0x9dd10d24
mov ecx, dword [0x4b27a4]
sar ecx, 6
or ecx, 0x3f84784b
cmp eax, ecx
je 0x403fb8
jmp 0x403fb8
jmp 0x403fbd
jmp 0x403fc2
lea eax, [esp + 0xb4]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x70], ecx
call fcn.00450ec0
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x403ff4
jmp 0x4053dd
mov eax, 0x87010204
mov ecx, dword [0x4a8354]
sar ecx, 3
mov edx, dword [0x4a9da0]
mov esi, edx
inc esi
mov dword [0x4a9da0], esi
add edx, 0x9b7ac379
and ecx, edx
cmp eax, ecx
jne 0x404039
mov ax, word [0x49f264]
mov cx, ax
add ecx, 0xdc99996
mov ax, cx
mov word [0x49f264], ax
lea eax, [esp + 0xa8]
mov ecx, 2
mov dword [esp], eax
mov dword [esp + 4], 2
mov dword [esp + 0x6c], ecx
call fcn.0041be20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x40406e
jmp 0x4053dd
lea eax, [esp + 0x9c]
mov ecx, 3
mov edx, dword [0x4a868c]
or edx, 0xad71eaa6
mov dword [0x4a868c], edx
mov dword [esp], eax
mov dword [esp + 4], 3
mov dword [esp + 0x68], ecx
call fcn.0041be20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x4040b5
jmp 0x4053dd
mov eax, dword [0x4a6fec]
and eax, 0xff3c9fcf
mov dword [0x4a6fec], eax
mov eax, esp
lea ecx, [esp + 0xc0]
mov dword [eax], ecx
call fcn.0043f1d0
mov ecx, eax
sar ecx, 0x1f
shr ecx, 0x1b
mov edx, eax
add edx, ecx
and edx, 0xffffffe0
sub eax, edx
mov dword [esp + 0xd8], eax
mov dword [0x4b19bc], 0xff7ed6cb
cmp dword [esp + 0xd8], 0x1f
jge 0x4041f8
mov eax, 0x46e4e6d2
mov cx, word [0x4a00fe]
movsx edx, cx
and edx, 0xcdb2000
mov esi, dword [0x4b1e20]
xor esi, 0xffffffff
sub eax, esi
sub eax, 0xd02aa82e
cmp edx, eax
jge 0x404140
mov eax, dword [0x4abd84]
or eax, 0xa3f56667
mov dword [0x4abd84], eax
lea eax, [esp + 0xcc]
mov ecx, dword [esp + 0xd8]
mov edx, 0x1f
sub edx, ecx
mov dword [esp + 0xd8], edx
mov ecx, dword [0x4ac4ec]
add ecx, 0x1c3ca8f3
mov dword [0x4ac4ec], ecx
mov ecx, dword [esp + 0xd8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043bf20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404196
jmp 0x4053dd
lea eax, [esp + 0xc0]
mov ecx, dword [0x4b249c]
xor ecx, 0xf3ed39fa
mov dword [0x4b249c], ecx
mov ecx, dword [esp + 0xd8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043bf20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x4041d7
jmp 0x4053dd
mov eax, dword [0x4a89e8]
mov ecx, eax
dec ecx
mov dword [0x4a89e8], ecx
mov ecx, dword [0x4af8b4]
add ecx, eax
mov dword [0x4af8b4], ecx
jmp 0x404203
mov dword [esp + 0xd8], 0
mov eax, dword [0x4a6de8]
add eax, 0x55e14083
mov ecx, dword [0x4b1310]
and ecx, eax
mov dword [0x4b1310], ecx
mov eax, dword [esp + 0xd0]
dec eax
mov dword [esp + 0xe0], eax
mov eax, dword [0x4b22e4]
mov ecx, eax
inc ecx
mov dword [0x4b22e4], ecx
mov ecx, dword [0x4ad170]
sar ecx, 2
neg ecx
lea eax, [eax + ecx + 1]
mov ecx, dword [0x4b1a88]
and ecx, eax
mov dword [0x4b1a88], ecx
mov eax, dword [esp + 0xc4]
dec eax
mov dword [esp + 0xdc], eax
mov eax, dword [0x4b24e4]
mov ecx, eax
inc ecx
mov dword [0x4b24e4], ecx
mov ecx, 0xbf00aea5
sub ecx, eax
mov dx, word [0x4a14b4]
mov ax, dx
imul eax, ecx
mov dx, ax
mov word [0x4a14b4], dx
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xdc]
sub eax, ecx
shl eax, 5
mov ecx, esp
mov dword [ecx + 4], eax
lea eax, [esp + 0xc0]
mov dword [ecx], eax
call fcn.0043bf20
mov ecx, dword [0x4ac044]
and ecx, 0x50584f9c
mov esi, dword [0x4ad6ec]
sub esi, ecx
mov dword [0x4ad6ec], esi
mov dword [esp + 0x64], eax
lea eax, [esp + 0xcc]
lea ecx, [esp + 0xc0]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401010
cmp eax, 0
jl 0x404390
mov eax, 0xc73952c1
mov ecx, dword [0x4af2dc]
mov edx, ecx
inc edx
mov dword [0x4af2dc], edx
and ecx, 0xc5eb7a1f
mov dword [0x4b1010], ecx
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xdc]
sub ecx, edx
mov edx, dword [esp + 0xbc]
mov esi, dword [edx + ecx*4]
inc esi
mov dword [edx + ecx*4], esi
mov ecx, dword [0x4b19b0]
xor ecx, 0xd6544e11
cmp eax, ecx
jl 0x404358
mov eax, dword [0x4aa978]
add eax, 0xfd73628b
mov dword [0x4aa978], eax
mov eax, esp
lea ecx, [esp + 0xc0]
mov dword [eax + 8], ecx
lea ecx, [esp + 0xcc]
mov dword [eax + 4], ecx
mov dword [eax], ecx
call fcn.00430730
mov ecx, dword [0x4b2088]
add ecx, 0x6bf6fff6
mov dword [0x4b2088], ecx
mov dword [esp + 0x60], eax
jmp 0x4042d4
mov ax, word [0x4a280c]
movsx ecx, ax
or ecx, 0x1e9653f3
mov dword [0x4ab724], ecx
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xdc]
sub ecx, edx
shl ecx, 5
mov edx, esp
mov dword [edx + 4], ecx
lea ecx, [esp + 0xc0]
mov dword [edx], ecx
call fcn.00402e60
mov si, word [0x4a2018]
mov cx, si
add ecx, 0x9d5d2cae
mov si, cx
mov word [0x4a2018], si
mov ecx, dword [esp + 0xe0]
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xe4]
cmp eax, dword [esp + 0xdc]
jle 0x405189
mov eax, 0xad3d5a2
mov ecx, dword [0x4abf10]
inc ecx
mov dword [0x4abf10], ecx
cmp eax, ecx
jl 0x404435
mov eax, dword [0x4b15e0]
imul eax, eax, 0xedfc3597
mov dword [0x4b15e0], eax
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd4]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xdc]
mov edx, dword [esp + 0xc8]
cmp eax, dword [edx + ecx*4]
jb 0x404481
mov eax, dword [esp + 0xe4]
sub eax, dword [esp + 0xdc]
sub eax, 1
mov ecx, dword [esp + 0xbc]
mov dword [ecx + eax*4], 0xffffffff
jmp 0x404ac4
mov eax, 0xef0c04c9
mov ecx, dword [0x4a6e60]
add ecx, 0xf930d1ef
mov dword [0x4a6e60], ecx
mov dx, word [0x49df4a]
mov cx, dx
imul ecx, ecx, 0xc3dbe687
mov dx, cx
mov word [0x49df4a], dx
mov ecx, dword [0x4a999c]
add ecx, 0xfdff7b19
mov dword [0x4a999c], ecx
mov ecx, dword [esp + 0xdc]
mov esi, dword [esp + 0xc8]
mov ecx, dword [esi + ecx*4]
mov dword [esp + 0x80], ecx
mov ecx, dword [0x4b03fc]
add ecx, 0x19b3dfbe
or ecx, 0x83c
mov dx, word [0x4a1b48]
mov si, dx
add esi, ecx
mov dx, si
mov word [0x4a1b48], dx
movzx ecx, word [esp + 0x80]
mov dword [esp + 0x88], ecx
mov ecx, dword [0x4b010c]
add ecx, 0xde9fe9fc
mov dword [0x4b010c], ecx
movzx ecx, word [esp + 0x82]
mov dword [esp + 0x84], ecx
mov ecx, dword [0x4b0ff0]
and ecx, 0x54088409
mov dword [0x4b0ff0], ecx
mov ecx, dword [esp + 0xe4]
mov esi, dword [esp + 0xd4]
mov ecx, dword [esi + ecx*4]
mov esi, dword [esp + 0x84]
xor edx, edx
mov dword [esp + 0x58], eax
mov eax, ecx
div esi
mov dword [esp + 0x94], eax
mov eax, dword [0x4b049c]
mov ecx, dword [esp + 0x58]
cmp ecx, eax
jle 0x404595
mov eax, dword [0x4b0ccc]
imul eax, eax, 0x8fb3da37
mov dword [0x4b0ccc], eax
jmp 0x4045bb
mov eax, dword [0x4acdc0]
mov ecx, eax
dec ecx
mov dword [0x4acdc0], ecx
add eax, 0xec9e5413
or eax, 0x22cb1c1b
mov ecx, dword [0x4b1108]
xor ecx, eax
mov dword [0x4b1108], ecx
mov eax, 0xf2fdca74
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xd4]
mov ecx, dword [edx + ecx*4]
mov edx, dword [esp + 0x84]
mov esi, dword [esp + 0x94]
imul edx, esi
sub ecx, edx
mov dword [esp + 0x8c], ecx
mov ecx, dword [0x4adc28]
not ecx
mov edx, dword [0x4a4d20]
inc edx
mov dword [0x4a4d20], edx
imul ecx, edx
mov di, word [0x49f8b8]
mov dx, di
add edx, ecx
mov di, dx
mov word [0x49f8b8], di
mov ecx, dword [esp + 0x8c]
shl ecx, 0x10
mov dword [esp + 0x8c], ecx
mov dword [0x4af9f4], 0xb6c984a2
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xd4]
movzx ecx, word [edx + ecx*4 - 2]
mov edx, dword [esp + 0x8c]
or edx, ecx
mov dword [esp + 0x8c], edx
mov ecx, dword [0x4b20bc]
or ecx, 0x219f70ca
mov dword [0x4b20bc], ecx
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x88]
imul ecx, edx
mov dword [esp + 0x7c], ecx
mov ecx, dword [0x4a5cbc]
sar ecx, 0xa
add ecx, 0xcc832e5f
cmp eax, ecx
jge 0x4046c0
mov ax, word [0x49ed34]
mov cx, ax
dec ecx
mov dx, cx
mov word [0x49ed34], dx
movsx ecx, ax
add ecx, 0x39a4d9c7
mov esi, dword [0x4aea88]
and esi, ecx
mov dword [0x4aea88], esi
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x7c]
jae 0x4047c2
mov eax, dword [0x4a91f8]
add eax, 0xbe593640
mov dword [0x4a91f8], eax
mov eax, dword [esp + 0x94]
dec eax
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x8c]
add ecx, eax
mov dword [esp + 0x8c], ecx
mov eax, dword [0x4a8b34]
dec eax
mov dword [0x4a8b34], eax
add eax, 0x70a57e88
cmp eax, 0x51cafbfb
jg 0x404730
mov eax, dword [0x4adbb4]
add eax, 0xde83e14
mov dword [0x4adbb4], eax
jmp 0x404735
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x80]
mov byte [esp + 0x57], cl
jb 0x404763
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x7c]
setb cl
mov byte [esp + 0x57], cl
mov al, byte [esp + 0x57]
test al, 1
jne 0x404774
jmp 0x40479f
mov eax, dword [esp + 0x94]
add eax, 0xffffffff
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x80]
add eax, dword [esp + 0x8c]
mov dword [esp + 0x8c], eax
jmp 0x404735
mov eax, dword [0x4a4ba0]
xor eax, 0xbe8d7b6e
cmp eax, 0x4dc8ac5c
je 0x4047bd
mov word [0x49e6b6], 0x4cf4
jmp 0x4047c2
mov eax, 0xdf0c9f48
mov ecx, dword [0x4a4ed4]
add ecx, 0x8959698b
mov dword [0x4a4ed4], ecx
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x8c]
sub edx, ecx
mov dword [esp + 0x8c], edx
mov ecx, dword [0x4b1414]
add ecx, 0x41c0085
mov dword [0x4b1414], ecx
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x84]
xor esi, esi
mov dword [esp + 0x50], eax
mov eax, ecx
mov dword [esp + 0x4c], edx
mov edx, esi
mov ecx, dword [esp + 0x4c]
div ecx
mov dword [esp + 0x98], eax
mov eax, dword [0x4abca0]
xor eax, 0x3d0a59d9
mov dword [0x4abca0], eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x98]
imul ecx, edx
sub eax, ecx
mov dword [esp + 0x90], eax
mov di, word [0x4a1180]
movsx eax, di
mov di, word [0x4a481e]
mov cx, di
dec ecx
mov di, cx
mov word [0x4a481e], di
movsx ecx, di
add eax, ecx
mov ecx, dword [esp + 0x50]
cmp ecx, eax
jle 0x4048b9
mov eax, dword [0x4ae034]
add eax, 0xe48fd0e2
xor eax, 0x6ad14961
mov ecx, dword [0x4ae0e4]
cmp eax, ecx
jne 0x4048b4
mov eax, dword [0x4a9cd0]
add eax, 0x1a61d70c
mov dword [0x4a9cd0], eax
jmp 0x4048c8
mov eax, dword [0x4ab048]
add eax, 0x72565c00
mov dword [0x4ab048], eax
mov eax, dword [esp + 0x90]
shl eax, 0x10
mov dword [esp + 0x90], eax
mov eax, dword [0x4a6290]
add eax, 0xe400f5e8
mov dword [0x4a6290], eax
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd4]
movzx eax, word [ecx + eax*4 - 4]
mov ecx, dword [esp + 0x90]
or ecx, eax
mov dword [esp + 0x90], ecx
mov eax, dword [0x4b1efc]
imul eax, eax, 0x41b6bbd7
mov ecx, dword [0x4b1764]
mov edx, ecx
inc edx
mov dword [0x4b1764], edx
lea eax, [eax + ecx + 1]
mov ecx, dword [0x4a8670]
sub ecx, eax
mov dword [0x4a8670], ecx
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x88]
imul eax, ecx
mov dword [esp + 0x7c], eax
mov eax, dword [0x4a5154]
dec eax
mov dword [0x4a5154], eax
mov si, word [0x4a1f48]
movsx ecx, si
imul eax, ecx
xor eax, 0xc0d6552
mov dword [0x4b2628], eax
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x7c]
jae 0x404a37
mov eax, dword [0x4a7634]
add eax, 0x1400289
mov dword [0x4a7634], eax
mov eax, dword [esp + 0x98]
dec eax
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x90], ecx
mov eax, dword [0x4ab388]
add eax, 0x7e590a19
mov dword [0x4ab388], eax
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x80]
mov byte [esp + 0x4b], cl
jb 0x4049f1
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x7c]
setb cl
mov byte [esp + 0x4b], cl
mov al, byte [esp + 0x4b]
test al, 1
jne 0x404a02
jmp 0x404a2d
mov eax, dword [esp + 0x98]
add eax, 0xffffffff
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x80]
add eax, dword [esp + 0x90]
mov dword [esp + 0x90], eax
jmp 0x4049c3
mov dword [0x4a74d8], 0x1f633422
mov ax, word [0x4a18fe]
mov cx, ax
add ecx, 0x87dfc484
mov ax, cx
mov word [0x4a18fe], ax
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x90]
sub edx, ecx
mov dword [esp + 0x90], edx
mov ecx, dword [0x4a5928]
or ecx, 0xfffff6e0
mov dword [0x4a5928], ecx
mov ecx, dword [esp + 0x94]
shl ecx, 0x10
mov edx, dword [esp + 0x98]
or ecx, edx
mov edx, dword [esp + 0xe4]
mov esi, dword [esp + 0xdc]
sub edx, esi
mov esi, dword [esp + 0xbc]
mov dword [esi + edx*4 - 4], ecx
mov ecx, dword [0x4aaa70]
xor ecx, 0x76c1
mov ax, word [0x49f960]
mov dx, ax
imul edx, ecx
mov ax, dx
mov word [0x49f960], ax
mov eax, 0xf7cdbe20
mov cx, word [0x49fd18]
movsx edx, cx
shl edx, 0xa
cmp eax, edx
jg 0x404af9
mov eax, dword [0x4a5930]
sar eax, 5
mov ecx, dword [0x4ab9f8]
or ecx, eax
mov dword [0x4ab9f8], ecx
jmp 0x404b08
mov eax, dword [0x4aee6c]
and eax, 0xe96b2a5e
mov dword [0x4aee6c], eax
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
sub eax, ecx
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx + eax*4 - 4]
inc edx
mov dword [ecx + eax*4 - 4], edx
mov si, word [0x4a230c]
movsx eax, si
not eax
mov ecx, dword [0x4ae75c]
mov edx, ecx
inc edx
mov dword [0x4ae75c], edx
and eax, ecx
mov ecx, dword [0x4b1220]
or ecx, eax
mov dword [0x4b1220], ecx
mov eax, 0x401c4a86
mov ecx, dword [0x4a7b28]
sar ecx, 6
or ecx, 0xfbfb0bfb
mov edx, dword [0x4a9490]
imul edx, ecx
mov dword [0x4a9490], edx
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xdc]
sub ecx, edx
mov edx, dword [esp + 0xbc]
mov esi, dword [edx + ecx*4 - 4]
dec esi
mov dword [edx + ecx*4 - 4], esi
mov di, word [0x4a1e78]
mov cx, di
dec ecx
mov di, cx
mov word [0x4a1e78], di
movsx ecx, di
cmp eax, ecx
jge 0x404bce
mov eax, dword [0x4ac524]
mov ecx, eax
inc ecx
mov dword [0x4ac524], ecx
or eax, 0x2172bc5f
mov dword [0x4a8628], eax
lea eax, [esp + 0xa8]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x44], ecx
call fcn.00450ec0
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404c00
jmp 0x4053dd
mov dword [0x4b17c0], 0x64b568d5
cmp dword [esp + 0xdc], 1
jge 0x404c23
xor eax, eax
mov dword [esp + 0x40], eax
jmp 0x404c3b
mov eax, dword [esp + 0xdc]
sub eax, 1
mov ecx, dword [esp + 0xc8]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0xa8]
mov edx, dword [esp + 0xb0]
mov dword [edx], eax
mov eax, dword [0x4ae77c]
sar eax, 3
and eax, 0xcf322b6c
mov edx, dword [0x4afa9c]
or edx, eax
mov dword [0x4afa9c], edx
mov eax, dword [esp + 0xdc]
mov edx, dword [esp + 0xc8]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0xb0]
mov dword [edx + 4], eax
mov eax, dword [0x4aae44]
mov edx, eax
dec edx
mov dword [0x4aae44], edx
mov si, word [0x49fa3c]
mov dx, si
xor edx, eax
mov si, dx
mov word [0x49fa3c], si
mov eax, dword [esp + 0xe4]
sub eax, dword [esp + 0xdc]
sub eax, 1
mov edx, dword [esp + 0xbc]
mov eax, dword [edx + eax*4]
mov dword [esp], ecx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00426790
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404ce9
jmp 0x4053dd
mov eax, dword [0x4ad74c]
shl eax, 5
mov cx, word [0x4a0114]
movsx edx, cx
add edx, 0x106fd5aa
cmp eax, edx
jg 0x404d26
mov ax, word [0x4a4466]
movsx ecx, ax
add ecx, 0x41c199e8
mov edx, dword [0x4aa84c]
sub edx, ecx
mov dword [0x4aa84c], edx
lea eax, [esp + 0x9c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x3c], ecx
call fcn.00450ec0
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404d58
jmp 0x4053dd
mov eax, dword [0x4b13f8]
add eax, 0x802b01
mov dword [0x4b13f8], eax
cmp dword [esp + 0xe4], 2
jge 0x404d80
xor eax, eax
mov dword [esp + 0x38], eax
jmp 0x404d98
mov eax, dword [esp + 0xe4]
sub eax, 2
mov ecx, dword [esp + 0xd4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xa4]
mov dword [ecx], eax
mov eax, dword [0x4a6bd4]
add eax, 0x76908e7b
mov dword [0x4a6bd4], eax
cmp dword [esp + 0xe4], 1
jge 0x404dcd
xor eax, eax
mov dword [esp + 0x34], eax
jmp 0x404de5
mov eax, dword [esp + 0xe4]
sub eax, 1
mov ecx, dword [esp + 0xd4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xa4]
mov dword [ecx + 4], eax
mov eax, dword [0x4b0d24]
cmp eax, 0x44a01023
jg 0x404e46
mov eax, dword [0x4afcc4]
mov ecx, eax
inc ecx
mov dword [0x4afcc4], ecx
xor eax, 0xb600f93c
mov ecx, dword [0x4a97d8]
imul ecx, ecx, 0xe69af3e6
cmp eax, ecx
jl 0x404e41
mov eax, dword [0x4ae9c8]
mov ecx, dword [0x4a9d70]
lea eax, [eax + ecx - 0x41659ea9]
mov dword [0x4a9d70], eax
jmp 0x404e5e
mov eax, dword [0x4ad770]
xor eax, 0xe0de4ae7
mov ecx, dword [0x4a83e8]
or ecx, eax
mov dword [0x4a83e8], ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd4]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xa4]
mov dword [ecx + 8], eax
mov eax, dword [0x4aef74]
dec eax
mov dword [0x4aef74], eax
or eax, 0xe202be
cmp eax, 0x1b48b5a3
jle 0x404eac
mov ax, word [0x49db14]
mov cx, ax
or ecx, 0xe039
mov ax, cx
mov word [0x49db14], ax
jmp 0x404eb1
lea eax, [esp + 0xa8]
lea ecx, [esp + 0x9c]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401010
cmp eax, 0
jg 0x404b53
lea eax, [esp + 0xa8]
lea ecx, [esp + 0xc0]
mov dx, word [0x49ec46]
mov si, dx
xor esi, 0xf8bf
mov dx, si
mov word [0x49ec46], dx
mov esi, dword [esp + 0xe4]
sub esi, dword [esp + 0xdc]
sub esi, 1
mov edi, dword [esp + 0xbc]
mov esi, dword [edi + esi*4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
call fcn.00426790
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404f3c
jmp 0x4053dd
lea eax, [esp + 0xa8]
mov ecx, dword [0x4aa0d8]
add ecx, 0xdbc7d7ce
mov dword [0x4aa0d8], ecx
mov ecx, dword [esp + 0xe4]
sub ecx, dword [esp + 0xdc]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043bf20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404f8a
jmp 0x4053dd
mov eax, 0xd78d1b8e
mov cx, word [0x49eb92]
mov dx, cx
inc edx
mov si, dx
mov word [0x49eb92], si
movsx edx, cx
imul edx, edx, 0x2355268e
sub edx, 0xb87b68fe
cmp eax, edx
jg 0x404fca
mov eax, dword [0x4ae088]
xor eax, 0x1d52c226
mov dword [0x4ae088], eax
lea eax, [esp + 0xcc]
lea ecx, [esp + 0xa8]
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00430730
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x404ffd
jmp 0x4053dd
lea eax, [esp + 0xcc]
xor ecx, ecx
mov edx, dword [0x4a97c8]
inc edx
mov dword [0x4a97c8], edx
mov esi, dword [0x4afa14]
and esi, edx
mov dword [0x4afa14], esi
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x30], ecx
call fcn.0041f470
cmp eax, 0
jge 0x405160
lea eax, [esp + 0xa8]
lea ecx, [esp + 0xc0]
mov edx, dword [0x4ae3c8]
add edx, 0xec0627cd
mov dword [0x4ae3c8], edx
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00425d30
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x40507f
jmp 0x4053dd
lea eax, [esp + 0xa8]
mov word [0x4a3f56], 0xe7bf
mov ecx, dword [esp + 0xe4]
sub ecx, dword [esp + 0xdc]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043bf20
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x4050c4
jmp 0x4053dd
lea eax, [esp + 0xcc]
lea ecx, [esp + 0xa8]
mov dx, word [0x49e01c]
movsx esi, dx
xor esi, 0x2382b273
mov edi, dword [0x4a9de8]
and edi, esi
mov dword [0x4a9de8], edi
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00428070
mov dword [esp + 0xe8], eax
cmp eax, 0
je 0x405115
jmp 0x4053dd
mov eax, dword [0x4ae1ac]
imul eax, eax, 0xdd6d7f89
mov dword [0x4ae1ac], eax
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
sub eax, ecx
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx + eax*4 - 4]
dec edx
mov dword [ecx + eax*4 - 4], edx
mov eax, dword [0x4a6334]
shl eax, 2
mov ecx, 0xaa0614c7
sub ecx, eax
mov eax, dword [0x4aee78]
or eax, ecx
mov dword [0x4aee78], eax
mov eax, dword [0x4ad920]
mov ecx, dword [0x4a8be0]
add ecx, eax
mov dword [0x4a8be0], ecx
mov eax, dword [esp + 0xe4]
add eax, 0xffffffff
mov dword [esp + 0xe4], eax
jmp 0x4043f7
mov eax, dword [0x4a7af8]
add eax, 0xbb73e1d3
mov dword [0x4a7af8], eax
cmp dword [esp + 0xec], 0
je 0x405215
mov ax, word [0x4a14f2]
mov cx, ax
add ecx, 0x7337a0ac
mov ax, cx
mov word [0x4a14f2], ax
mov ecx, dword [esp + 0xec]
mov edx, esp
lea esi, [esp + 0xb4]
mov dword [edx + 4], esi
mov dword [edx], ecx
call fcn.00425d30
mov ecx, dword [0x4ac378]
xor ecx, 0xe23c1bf
mov dword [0x4ac378], ecx
mov ecx, dword [esp + 0xf4]
mov ecx, dword [ecx]
mov edx, dword [esp + 0xf8]
mov edx, dword [edx]
imul ecx, edx
mov edx, dword [esp + 0xec]
mov dword [edx], ecx
mov word [0x4a40a8], 0xbe4a
mov dword [esp + 0x2c], eax
mov ax, word [0x49ed28]
movsx ecx, ax
add ecx, 0x3eab0632
or ecx, 0xcf5ee803
cmp ecx, 0x221a905
jl 0x40524e
mov ax, word [0x4a3bda]
mov cx, ax
or ecx, 0x4e67
mov ax, cx
mov word [0x4a3bda], ax
cmp dword [esp + 0xf0], 0
je 0x40539d
mov eax, 0x890d51a4
mov cx, word [0x4a2ee6]
movsx edx, cx
xor edx, 0x5c8c4092
or edx, 0xce235247
cmp eax, edx
jne 0x405296
mov ax, word [0x4a3da6]
movsx ecx, ax
mov edx, dword [0x4a8b1c]
sub edx, ecx
mov dword [0x4a8b1c], edx
mov eax, 0x9d772cbf
mov ecx, dword [esp + 0xd8]
mov edx, esp
mov dword [edx + 4], ecx
lea ecx, [esp + 0xcc]
mov dword [edx], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
call fcn.00402e60
mov dword [0x4aae08], 0x8b8ee60e
mov ecx, dword [esp + 0xf0]
mov edx, esp
mov esi, dword [esp + 0x24]
mov dword [edx + 4], esi
mov dword [edx], ecx
mov dword [esp + 0x20], eax
call fcn.00425d30
mov ecx, dword [0x4afa7c]
add ecx, 0x787aa05c
sub ecx, 0x9ed3aa13
mov edx, dword [esp + 0x28]
cmp edx, ecx
mov dword [esp + 0x1c], eax
je 0x405324
mov eax, dword [0x4ae7f0]
sar eax, 8
and eax, 0xdeceabd
mov ecx, dword [0x4afd14]
or ecx, eax
mov dword [0x4afd14], ecx
jmp 0x405333
mov eax, dword [0x4a64f8]
and eax, 0xfb249ffa
mov dword [0x4a64f8], eax
xor eax, eax
mov ecx, dword [esp + 0xf4]
mov ecx, dword [ecx]
mov edx, dword [esp + 0xf0]
mov dword [edx], ecx
mov ecx, dword [0x4a8aa0]
and ecx, 0x84221210
mov dword [0x4a8aa0], ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x18], eax
call fcn.0041f470
cmp eax, 0
jne 0x40538a
mov eax, dword [esp + 0xf0]
mov dword [eax], 1
mov eax, dword [0x4ab10c]
mov ecx, dword [0x4a5610]
xor ecx, eax
mov dword [0x4a5610], ecx
mov eax, 0xb53485a3
mov ecx, dword [0x4abdc0]
dec ecx
mov dword [0x4abdc0], ecx
cmp eax, ecx
jg 0x4053d8
mov eax, dword [0x4ae7e4]
mov ecx, eax
inc ecx
mov dword [0x4ae7e4], ecx
xor eax, 0x4c720a1d
mov ecx, dword [0x4a6fa0]
sub ecx, eax
mov dword [0x4a6fa0], ecx
jmp 0x4053dd
mov eax, esp
lea ecx, [esp + 0x9c]
mov dword [eax + 0x10], ecx
lea ecx, [esp + 0xa8]
mov dword [eax + 0xc], ecx
lea ecx, [esp + 0xb4]
mov dword [eax + 8], ecx
lea ecx, [esp + 0xc0]
mov dword [eax + 4], ecx
lea ecx, [esp + 0xcc]
mov dword [eax], ecx
mov dword [eax + 0x14], 0
call fcn.0041fec0
mov eax, dword [0x4ad7d8]
add eax, 0xbfd0e208
mov dword [0x4ad7d8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0xfc]
add esp, 0x100
pop esi
pop edi
ret