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

Disassembly:
push ebx
push edi
push esi
sub esp, 0xfc
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 + 0xf4], eax
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xec], edx
mov dword [esp + 0xe8], esi
mov eax, dword [0x49b864]
mov ecx, eax
inc ecx
mov dword [0x49b864], ecx
mov ecx, dword [0x49ba8c]
lea eax, [eax + ecx + 0x382a30c4]
mov dword [0x49ba8c], eax
mov bx, word [0x49f998]
mov ax, bx
imul eax, eax, 0x88041085
mov bx, ax
mov word [0x49f998], bx
mov eax, dword [0x49a7c4]
mov ecx, eax
dec ecx
mov dword [0x49a7c4], ecx
mov ecx, dword [0x499634]
or eax, ecx
or eax, 0x261f3bf5
mov dword [0x499634], eax
mov eax, dword [esp + 0xf4]
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x74], edi
call fcn.0042a930
cmp eax, 0
jne 0x4041f1
mov dword [esp + 0xf8], 0xfffffff4
jmp 0x405c12
mov eax, 0x9609407e
mov ecx, dword [0x499230]
xor ecx, 0xa597b10b
mov dword [0x499230], ecx
mov ecx, esp
lea edx, [esp + 0x98]
mov dword [ecx + 0x10], edx
lea edx, [esp + 0xa4]
mov dword [ecx + 0xc], edx
lea edx, [esp + 0xb0]
mov dword [ecx + 8], edx
lea edx, [esp + 0xbc]
mov dword [ecx + 4], edx
lea edx, [esp + 0xc8]
mov dword [ecx], edx
mov dword [ecx + 0x14], 0
mov dword [esp + 0x70], eax
call fcn.00407870
mov si, word [0x49eb26]
movsx eax, si
imul eax, eax, 0x2f077ba9
mov ecx, dword [esp + 0x70]
cmp ecx, eax
jle 0x40428b
mov eax, dword [0x497d04]
dec eax
mov dword [0x497d04], eax
imul eax, eax, 0xef5eb2a
mov ecx, dword [0x496164]
or ecx, eax
mov dword [0x496164], ecx
jmp 0x40429a
mov eax, dword [0x49a98c]
and eax, 0xc696dea
mov dword [0x49a98c], eax
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0042ae80
cmp eax, 0
jge 0x40438d
mov ax, word [0x4a053a]
movsx ecx, ax
not ecx
or ecx, 0xd62f2cfc
mov dword [0x4959a8], ecx
cmp dword [esp + 0xe8], 0
je 0x404319
xor eax, eax
mov ecx, dword [esp + 0xe8]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x6c], eax
call fcn.0042eff0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x404314
jmp 0x405b27
jmp 0x404319
mov dword [0x497e80], 0x78d80227
cmp dword [esp + 0xec], 0
je 0x404365
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0xec]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0040d500
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x404360
jmp 0x405b27
jmp 0x404365
mov ax, word [0x49f2bc]
mov cx, ax
and ecx, 0x9ca6
mov ax, cx
mov word [0x49f2bc], ax
mov dword [esp + 0xf8], 0
jmp 0x405c12
lea eax, [esp + 0xc8]
mov ecx, dword [0x49c170]
or ecx, 0xb5be1217
mov dword [0x49c170], ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040d500
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4043ce
jmp 0x405b27
mov eax, 0xefea354d
mov ecx, dword [0x496620]
shl ecx, 8
add ecx, 0xf3a85623
and ecx, 0xc83b5081
cmp eax, ecx
jle 0x404439
mov eax, dword [0x4969a8]
sar eax, 7
add eax, 0x901c9ab0
mov ecx, dword [0x496170]
mov edx, ecx
inc edx
mov dword [0x496170], edx
mov edx, dword [0x497ca0]
mov esi, edx
inc esi
mov dword [0x497ca0], esi
add ecx, edx
cmp eax, ecx
je 0x404434
mov eax, dword [0x49c150]
xor eax, 0xb6bbe5ad
mov dword [0x49c150], eax
jmp 0x404439
lea eax, [esp + 0xbc]
mov ecx, dword [esp + 0xf4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040d500
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x404468
jmp 0x405b27
lea eax, [esp + 0xb0]
mov cx, word [0x4a0a98]
mov dx, cx
mov cx, word [0x49e82c]
mov si, cx
imul esi, edx
mov cx, si
mov word [0x49e82c], cx
mov dword [esp + 0xbc], 1
mov dword [esp + 0xc8], 1
mov edx, dword [0x49cef0]
xor edx, 0x858010b
mov dword [0x49cef0], edx
mov edx, dword [esp + 0xf0]
mov edx, dword [edx + 4]
add edx, 2
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00427d70
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4044e6
jmp 0x405b27
lea eax, [esp + 0xb0]
xor ecx, ecx
mov edx, dword [0x4968b4]
or edx, 0xf684ab39
mov dword [0x4968b4], edx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x68], ecx
call fcn.0042eff0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x40452a
jmp 0x405b27
lea eax, [esp + 0xa4]
mov ecx, 2
mov edx, dword [0x497754]
mov esi, dword [0x49ccbc]
mov edi, esi
dec edi
mov dword [0x49ccbc], edi
imul edx, esi
mov dword [0x4976cc], edx
mov dword [esp], eax
mov dword [esp + 4], 2
mov dword [esp + 0x64], ecx
call fcn.00427d70
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x40457d
jmp 0x405b27
mov eax, dword [0x4987bc]
mov ecx, eax
inc ecx
mov dword [0x4987bc], ecx
cmp eax, 0x11e20945
jge 0x4045bb
mov eax, dword [0x49ac80]
shl eax, 5
mov ecx, dword [0x498cdc]
imul ecx, ecx, 0x93355dd6
xor eax, ecx
mov ecx, dword [0x4990a0]
imul ecx, eax
mov dword [0x4990a0], ecx
lea eax, [esp + 0x98]
mov ecx, 3
mov dword [esp], eax
mov dword [esp + 4], 3
mov dword [esp + 0x60], ecx
call fcn.00427d70
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4045f0
jmp 0x405b27
mov ax, word [0x49eda2]
movsx ecx, ax
mov edx, dword [0x49b17c]
not edx
or ecx, edx
mov edx, dword [0x49640c]
xor edx, ecx
mov dword [0x49640c], edx
mov ecx, esp
lea edx, [esp + 0xbc]
mov dword [ecx], edx
call fcn.00446f00
mov ecx, eax
sar ecx, 0x1f
shr ecx, 0x1b
mov edx, eax
add edx, ecx
and edx, 0xffffffe0
sub eax, edx
mov dword [esp + 0xd4], eax
mov si, word [0x4a0b9a]
mov ax, si
or eax, 0xabf
mov si, ax
mov word [0x4a0b9a], si
cmp dword [esp + 0xd4], 0x1f
jge 0x40476e
lea eax, [esp + 0xc8]
mov ecx, dword [0x495fd8]
add ecx, 0xaf2fbb0b
mov dword [0x495fd8], ecx
mov ecx, dword [esp + 0xd4]
mov edx, 0x1f
sub edx, ecx
mov dword [esp + 0xd4], edx
mov ecx, dword [0x497a20]
xor ecx, 0xb79984c6
mov dword [0x497a20], ecx
mov ecx, dword [esp + 0xd4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004418e0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4046c8
jmp 0x405b27
lea eax, [esp + 0xbc]
mov ecx, dword [0x4990e0]
inc ecx
mov dword [0x4990e0], ecx
imul ecx, ecx, 0x16196b9f
or ecx, 0x82f3f010
mov edx, dword [0x49b738]
imul edx, ecx
mov dword [0x49b738], edx
mov ecx, dword [esp + 0xd4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004418e0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x40471f
jmp 0x405b27
mov eax, 0x7a97415a
mov ecx, dword [0x498d70]
sar ecx, 5
cmp eax, ecx
jl 0x40475a
mov ax, word [0x49d11c]
movsx ecx, ax
shr ecx, 8
mov ax, word [0x4a0304]
mov dx, ax
xor edx, ecx
mov ax, dx
mov word [0x4a0304], ax
jmp 0x404769
mov eax, dword [0x4983e4]
xor eax, 0xe6ff03e4
mov dword [0x4983e4], eax
jmp 0x404779
mov dword [esp + 0xd4], 0
mov eax, 0x4e1bfb86
mov cx, word [0x49f9d2]
movsx edx, cx
xor edx, 0x678e1106
mov esi, dword [0x497cac]
and esi, edx
mov dword [0x497cac], esi
mov edx, dword [esp + 0xcc]
dec edx
mov dword [esp + 0xdc], edx
mov edx, dword [0x49cc78]
mov esi, edx
dec esi
mov dword [0x49cc78], esi
or edx, 0x9b60a182
cmp eax, edx
jg 0x404804
mov eax, 0x21aa8a0e
mov ecx, dword [0x49b448]
mov edx, ecx
inc edx
mov dword [0x49b448], edx
or ecx, 0xafd951ca
cmp eax, ecx
je 0x4047ff
mov eax, dword [0x49bb84]
inc eax
mov dword [0x49bb84], eax
mov cx, ax
mov word [0x4a0bc2], cx
jmp 0x404804
mov eax, 0x11208200
mov ecx, dword [esp + 0xc0]
dec ecx
mov dword [esp + 0xd8], ecx
mov ecx, dword [0x4987bc]
mov edx, ecx
inc edx
mov dword [0x4987bc], edx
cmp eax, ecx
je 0x404889
mov eax, dword [0x4984c0]
cmp eax, 0x240505
jge 0x40485c
mov ax, word [0x4a03a2]
mov cx, ax
imul ecx, ecx, 0xebebeeff
mov ax, cx
mov word [0x4a03a2], ax
jmp 0x404884
mov eax, 0x84f0adfe
mov ecx, dword [0x49c01c]
sub ecx, 0x1c34d704
cmp eax, ecx
jg 0x40487a
jmp 0x40487f
jmp 0x40487f
jmp 0x404884
jmp 0x404889
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xd8]
sub eax, ecx
shl eax, 5
mov ecx, esp
mov dword [ecx + 4], eax
lea eax, [esp + 0xbc]
mov dword [ecx], eax
call fcn.004418e0
mov ecx, dword [0x49850c]
xor ecx, 0xce39bc35
mov dword [0x49850c], ecx
mov dword [esp + 0x5c], eax
lea eax, [esp + 0xc8]
lea ecx, [esp + 0xbc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043e2d0
cmp eax, 0
jl 0x40498d
mov ax, word [0x49fc96]
movsx ecx, ax
xor ecx, 0x8766c8eb
mov edx, dword [0x49b740]
sub edx, ecx
mov dword [0x49b740], edx
mov ecx, dword [esp + 0xdc]
mov edx, dword [esp + 0xd8]
sub ecx, edx
mov edx, dword [esp + 0xb8]
mov esi, dword [edx + ecx*4]
inc esi
mov dword [edx + ecx*4], esi
mov ecx, dword [0x499620]
add ecx, 0xa386a2a5
mov edx, dword [0x498ca8]
or edx, ecx
mov dword [0x498ca8], edx
mov ecx, esp
lea edx, [esp + 0xbc]
mov dword [ecx + 8], edx
lea edx, [esp + 0xc8]
mov dword [ecx + 4], edx
mov dword [ecx], edx
call fcn.00402e30
mov ecx, dword [0x49a25c]
inc ecx
mov dword [0x49a25c], ecx
mov edx, dword [0x498c8c]
and ecx, edx
and ecx, 0xa8e7e581
mov edx, dword [0x495bb8]
imul edx, ecx
mov dword [0x495bb8], edx
mov dword [esp + 0x58], eax
jmp 0x4048c5
mov eax, dword [0x496f3c]
imul eax, eax, 0x7bc90ff7
and eax, 0x2ed548d2
mov dword [0x499758], eax
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xd8]
sub eax, ecx
shl eax, 5
mov ecx, esp
mov dword [ecx + 4], eax
lea eax, [esp + 0xbc]
mov dword [ecx], eax
call fcn.00408ad0
mov ecx, dword [0x497694]
xor ecx, 0x29e13e00
mov dword [0x497694], ecx
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0xe0], ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xe0]
cmp eax, dword [esp + 0xd8]
jle 0x40587e
mov ax, word [0x49da8c]
mov cx, ax
inc ecx
mov ax, cx
mov word [0x49da8c], ax
movsx ecx, ax
mov edx, dword [0x4965a8]
imul ecx, edx
cmp ecx, 0x2581a568
je 0x404a3f
mov eax, dword [0x496154]
or eax, 0xbbcb3a6b
mov dword [0x496154], eax
jmp 0x404a7c
mov eax, 0x44e5d50a
mov ecx, dword [0x4966f8]
inc ecx
mov dword [0x4966f8], ecx
or ecx, 0xdfbc0c94
cmp eax, ecx
jl 0x404a77
mov ax, word [0x49f1c6]
mov cx, ax
or ecx, 0x3264
mov ax, cx
mov word [0x49f1c6], ax
jmp 0x404a7c
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0xc4]
cmp eax, dword [edx + ecx*4]
jb 0x404ac8
mov eax, dword [esp + 0xe0]
sub eax, dword [esp + 0xd8]
sub eax, 1
mov ecx, dword [esp + 0xb8]
mov dword [ecx + eax*4], 0xffffffff
jmp 0x4051bf
mov eax, 0x7b1f6ba1
mov ecx, dword [0x49bacc]
mov edx, ecx
inc edx
mov dword [0x49bacc], edx
mov edx, dword [0x49bf88]
inc edx
mov dword [0x49bf88], edx
and edx, 0x8904f137
or ecx, edx
cmp eax, ecx
je 0x404b16
mov ax, word [0x49db10]
movsx ecx, ax
or ecx, 0xd511681f
mov edx, dword [0x498cf8]
xor edx, ecx
mov dword [0x498cf8], edx
mov eax, 0x4125f332
mov cx, word [0x49d616]
movsx edx, cx
cmp eax, edx
jge 0x404b4b
mov eax, dword [0x49bd84]
imul eax, eax, 0xfb8df667
xor eax, 0x5fd1f81c
mov ecx, dword [0x499e5c]
and ecx, eax
mov dword [0x499e5c], ecx
mov ax, word [0x49ee9e]
mov cx, ax
dec ecx
mov ax, cx
mov word [0x49ee9e], ax
xor ecx, 0xbd09
mov ax, word [0x49d1ca]
mov dx, ax
and edx, ecx
mov ax, dx
mov word [0x49d1ca], ax
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0xc4]
mov ecx, dword [edx + ecx*4]
mov dword [esp + 0x7c], ecx
mov ecx, dword [0x49a5d8]
not ecx
mov edx, dword [0x499d88]
mov esi, edx
dec esi
mov dword [0x499d88], esi
cmp ecx, edx
jle 0x404bbb
mov eax, dword [0x498eb0]
or eax, 0xbdc30de9
mov dword [0x498eb0], eax
movzx eax, word [esp + 0x7c]
mov dword [esp + 0x84], eax
mov eax, dword [0x4961b0]
xor eax, 0x9eef2682
mov ecx, dword [0x496c5c]
or ecx, eax
mov dword [0x496c5c], ecx
movzx eax, word [esp + 0x7e]
mov dword [esp + 0x80], eax
mov eax, dword [0x49853c]
add eax, 0xd9a03307
mov dword [0x49853c], eax
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x80]
xor edx, edx
div ecx
mov dword [esp + 0x90], eax
mov si, word [0x49dad4]
movsx eax, si
mov si, word [0x4a0bea]
movsx ecx, si
mov edx, dword [0x495bc0]
inc edx
mov dword [0x495bc0], edx
add edx, 0x9c23bfae
xor ecx, edx
cmp eax, ecx
jl 0x404cc8
mov eax, 0xb3167e6
mov ecx, dword [0x499628]
dec ecx
mov dword [0x499628], ecx
mov edx, dword [0x49c528]
xor edx, 0xffffffff
imul edx, edx, 0xc02ba9d6
xor ecx, edx
cmp eax, ecx
jg 0x404cab
mov eax, dword [0x495b98]
mov ecx, eax
inc ecx
mov dword [0x495b98], ecx
mov ecx, dword [0x49c9f8]
sar ecx, 0xa
imul ecx, ecx, 0xb9559a5a
and eax, ecx
mov ecx, dword [0x49bee4]
xor ecx, eax
mov dword [0x49bee4], ecx
jmp 0x404cc3
mov ax, word [0x49e328]
mov cx, ax
imul ecx, ecx, 0x2dfb8fcf
mov ax, cx
mov word [0x49e328], ax
jmp 0x404cc8
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x90]
imul ecx, edx
sub eax, ecx
mov dword [esp + 0x88], eax
mov si, word [0x49d80a]
mov ax, si
dec eax
mov si, ax
mov word [0x49d80a], si
movsx eax, si
mov ecx, dword [0x497be4]
xor ecx, eax
mov dword [0x497be4], ecx
mov eax, dword [esp + 0x88]
shl eax, 0x10
mov dword [esp + 0x88], eax
mov eax, dword [0x497394]
mov ecx, dword [0x495e14]
not ecx
add eax, ecx
xor eax, 0x8d64e63b
mov ecx, dword [0x49ccb8]
or ecx, eax
mov dword [0x49ccb8], ecx
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
movzx eax, word [ecx + eax*4 - 2]
mov ecx, dword [esp + 0x88]
or ecx, eax
mov dword [esp + 0x88], ecx
mov si, word [0x49dd5a]
movsx eax, si
sar eax, 2
add eax, 0xf87f73f0
mov ecx, dword [0x4992b8]
or eax, ecx
mov ecx, dword [0x49c784]
imul ecx, eax
mov dword [0x49c784], ecx
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x84]
imul eax, ecx
mov dword [esp + 0x78], eax
mov eax, dword [0x49966c]
add eax, 0xaef2fbe7
mov dword [0x49966c], eax
mov eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x78]
jae 0x404e82
mov eax, dword [0x49b8e8]
xor eax, 0xe6fe1fe1
mov dword [0x49b8e8], eax
mov eax, dword [esp + 0x90]
dec eax
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x88]
add ecx, eax
mov dword [esp + 0x88], ecx
mov eax, dword [0x495d64]
imul eax, eax, 0x45685146
mov dword [0x495d64], eax
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x7c]
mov byte [esp + 0x53], cl
jb 0x404e3a
mov eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x78]
setb cl
mov byte [esp + 0x53], cl
mov al, byte [esp + 0x53]
test al, 1
jne 0x404e4b
jmp 0x404e73
mov eax, dword [esp + 0x90]
add eax, 0xffffffff
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x7c]
add eax, dword [esp + 0x88]
mov dword [esp + 0x88], eax
jmp 0x404e0f
mov eax, dword [0x495b94]
add eax, 0xd832ed8c
mov dword [0x495b94], eax
mov eax, 0x9018bb53
mov ecx, dword [0x49939c]
shr ecx, 3
and ecx, 0xae16
mov dx, word [0x49ee08]
mov si, dx
imul esi, ecx
mov dx, si
mov word [0x49ee08], dx
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x88]
sub esi, ecx
mov dword [esp + 0x88], esi
mov ecx, dword [0x49a4a8]
inc ecx
mov dword [0x49a4a8], ecx
mov dword [0x499e60], ecx
mov ecx, dword [esp + 0x88]
mov esi, dword [esp + 0x80]
xor edx, edx
mov dword [esp + 0x4c], eax
mov eax, ecx
div esi
mov dword [esp + 0x94], eax
mov di, word [0x49eed4]
mov ax, di
imul eax, eax, 0x15845240
mov di, ax
mov word [0x49eed4], di
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x94]
imul ecx, edx
sub eax, ecx
mov dword [esp + 0x8c], eax
mov eax, dword [0x49a3d4]
or eax, 0x3000088
mov dword [0x49a3d4], eax
mov eax, dword [esp + 0x8c]
shl eax, 0x10
mov dword [esp + 0x8c], eax
mov di, word [0x49e812]
mov ax, di
dec eax
mov di, ax
mov word [0x49e812], di
movsx eax, di
and eax, 0x3b4694ac
or eax, 0x85fa0972
mov ecx, dword [esp + 0x4c]
cmp ecx, eax
jge 0x404fcb
mov eax, dword [0x4986ac]
mov cx, word [0x49e38e]
mov dx, cx
dec edx
mov si, dx
mov word [0x49e38e], si
movsx edx, cx
sub eax, edx
cmp eax, 0x28801887
jl 0x404fc6
mov eax, dword [0x497afc]
mov ecx, eax
dec ecx
mov dword [0x497afc], ecx
mov ecx, dword [0x49c4c4]
and eax, ecx
and eax, 0xf25f5f2d
mov dword [0x49c4c4], eax
jmp 0x404fcb
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
movzx eax, word [ecx + eax*4 - 4]
mov ecx, dword [esp + 0x8c]
or ecx, eax
mov dword [esp + 0x8c], ecx
mov eax, dword [0x4963ac]
imul eax, eax, 0xd00b8943
mov dword [0x4963ac], eax
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x84]
imul eax, ecx
mov dword [esp + 0x78], eax
mov eax, dword [0x497ab0]
xor eax, 0xcb102d6d
mov ecx, dword [0x49c9d0]
cmp eax, ecx
je 0x405043
mov ax, word [0x49d4a8]
mov cx, ax
imul ecx, ecx, 0xe9dc94df
mov ax, cx
mov word [0x49d4a8], ax
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x78]
jae 0x405119
mov eax, dword [0x49c794]
add eax, 0xd4cffaa7
mov dword [0x49c794], eax
mov eax, dword [esp + 0x94]
dec eax
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x8c]
add ecx, eax
mov dword [esp + 0x8c], ecx
mov eax, dword [0x49afb8]
add eax, 0x1c98d8b7
mov dword [0x49afb8], eax
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x7c]
mov byte [esp + 0x4b], cl
jb 0x4050c0
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x78]
setb cl
mov byte [esp + 0x4b], cl
mov al, byte [esp + 0x4b]
test al, 1
jne 0x4050d1
jmp 0x4050f9
mov eax, dword [esp + 0x94]
add eax, 0xffffffff
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x7c]
add eax, dword [esp + 0x8c]
mov dword [esp + 0x8c], eax
jmp 0x405095
mov eax, dword [0x49851c]
and eax, 0xedb9
mov cx, word [0x49e588]
mov dx, cx
or edx, eax
mov cx, dx
mov word [0x49e588], cx
mov ax, word [0x49ec9a]
mov cx, ax
mov edx, ecx
dec edx
mov ax, dx
mov word [0x49ec9a], ax
or ecx, 0x7ac4
mov ax, word [0x49efdc]
mov dx, ax
imul edx, ecx
mov ax, dx
mov word [0x49efdc], ax
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x8c]
sub edx, ecx
mov dword [esp + 0x8c], edx
mov ecx, dword [0x498334]
dec ecx
mov dword [0x498334], ecx
mov edx, dword [0x49c238]
cmp ecx, edx
jge 0x405187
mov eax, dword [0x49b104]
add eax, 0xbd56f29d
mov dword [0x49b104], eax
mov eax, dword [esp + 0x90]
shl eax, 0x10
mov ecx, dword [esp + 0x94]
or eax, ecx
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xd8]
sub ecx, edx
mov edx, dword [esp + 0xb8]
mov dword [edx + ecx*4 - 4], eax
mov dword [0x497440], 0x209934
mov eax, dword [0x499ce8]
mov cx, word [0x4a03d0]
movsx edx, cx
sub eax, edx
mov edx, dword [0x498160]
sub eax, edx
mov edx, dword [0x4980fc]
sub edx, eax
mov dword [0x4980fc], edx
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0xd8]
sub eax, edx
mov edx, dword [esp + 0xb8]
mov esi, dword [edx + eax*4 - 4]
inc esi
mov dword [edx + eax*4 - 4], esi
mov eax, dword [0x4971a4]
add eax, 0x2affb2af
mov dword [0x4971a4], eax
mov eax, 0x477c9a5e
mov cx, word [0x4a0bde]
movsx edx, cx
shl edx, 6
or edx, 0x9cef20f8
cmp eax, edx
jge 0x40524d
mov ax, word [0x49e05e]
mov cx, ax
add ecx, 0x68038080
mov ax, cx
mov word [0x49e05e], ax
lea eax, [esp + 0xa4]
xor ecx, ecx
mov edx, dword [esp + 0xe0]
mov esi, dword [esp + 0xd8]
sub edx, esi
mov esi, dword [esp + 0xb8]
mov edi, dword [esi + edx*4 - 4]
dec edi
mov dword [esi + edx*4 - 4], edi
mov dword [0x496cbc], 0x8aa1be6a
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x44], ecx
call fcn.0042eff0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4052a9
jmp 0x405b27
mov ax, word [0x49eed4]
mov cx, ax
mov ax, word [0x49e542]
mov dx, ax
or edx, ecx
mov ax, dx
mov word [0x49e542], ax
cmp dword [esp + 0xd8], 1
jge 0x4052df
xor eax, eax
mov dword [esp + 0x40], eax
jmp 0x4052f7
mov eax, dword [esp + 0xd8]
sub eax, 1
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xac]
mov dword [ecx], eax
mov eax, dword [0x497904]
mov ecx, 0x305cfa50
sub ecx, eax
mov eax, dword [0x4971b4]
sub eax, 0x47d27001
cmp ecx, eax
jge 0x405332
mov eax, dword [0x499fc4]
imul eax, eax, 0x608df4b6
mov dword [0x499fc4], eax
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0xc4]
mov ecx, dword [edx + ecx*4]
mov edx, dword [esp + 0xac]
mov dword [edx + 4], ecx
mov si, word [0x4a02be]
mov cx, si
inc ecx
mov di, cx
mov word [0x4a02be], di
movsx ecx, si
mov edx, dword [0x499120]
add edx, ecx
mov dword [0x499120], edx
mov ecx, dword [esp + 0xe0]
sub ecx, dword [esp + 0xd8]
sub ecx, 1
mov edx, dword [esp + 0xb8]
mov ecx, dword [edx + ecx*4]
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0043fb30
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4053ba
jmp 0x405b27
lea eax, [esp + 0x98]
xor ecx, ecx
mov edx, dword [0x4961ec]
add edx, 0xfdc0f308
mov dword [0x4961ec], edx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x3c], ecx
call fcn.0042eff0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4053fe
jmp 0x405b27
mov eax, 0x866cc0de
mov cx, word [0x49e1be]
mov dx, cx
dec edx
mov cx, dx
mov word [0x49e1be], cx
movsx edx, cx
sub edx, 0x34b41e05
xor edx, 0xe452db71
cmp eax, edx
je 0x40543e
mov eax, dword [0x4962b8]
and eax, 0x7532218a
mov dword [0x4962b8], eax
cmp dword [esp + 0xe0], 2
jge 0x405457
xor eax, eax
mov dword [esp + 0x38], eax
jmp 0x40546f
mov eax, dword [esp + 0xe0]
sub eax, 2
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xa0]
mov dword [ecx], eax
mov dx, word [0x49dfda]
movsx eax, dx
imul eax, eax, 0x98834a05
mov ecx, dword [0x49b874]
sub ecx, eax
mov dword [0x49b874], ecx
cmp dword [esp + 0xe0], 1
jge 0x4054b3
xor eax, eax
mov dword [esp + 0x34], eax
jmp 0x4054cb
mov eax, dword [esp + 0xe0]
sub eax, 1
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xa0]
mov dword [ecx + 4], eax
mov eax, dword [0x49ac54]
add eax, 0x7ff67d30
mov dword [0x49ac54], eax
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd0]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xa0]
mov dword [ecx + 8], eax
mov eax, dword [0x49b80c]
mov ecx, eax
dec ecx
mov dword [0x49b80c], ecx
mov ecx, dword [0x4983b0]
sub ecx, eax
mov dword [0x4983b0], ecx
lea eax, [esp + 0xa4]
lea ecx, [esp + 0x98]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0043e2d0
cmp eax, 0
jg 0x405215
mov eax, 0xc0f85f21
mov cx, word [0x49dee4]
movsx edx, cx
cmp eax, edx
jge 0x405568
mov eax, dword [0x49af64]
add eax, 0xe913eb07
mov dword [0x49af64], eax
lea eax, [esp + 0xa4]
lea ecx, [esp + 0xbc]
mov edx, dword [esp + 0xe0]
sub edx, dword [esp + 0xd8]
sub edx, 1
mov esi, dword [esp + 0xb8]
mov edx, dword [esi + edx*4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0043fb30
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4055b6
jmp 0x405b27
mov eax, 0xfdfb96ef
mov ecx, dword [0x49b73c]
mov edx, ecx
dec edx
mov dword [0x49b73c], edx
add ecx, 0xb47b12f8
cmp eax, ecx
jle 0x405620
mov eax, 0x7fbfd1d6
mov ecx, dword [0x49c4b0]
or ecx, 0x22a49c6
cmp eax, ecx
jg 0x40561b
mov eax, 0x3971393
mov cx, word [0x49e784]
movsx edx, cx
xor edx, 0xffffffff
xor edx, 0xc504b871
cmp eax, edx
je 0x405616
jmp 0x405616
jmp 0x40561b
jmp 0x405620
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0xe0]
sub ecx, dword [esp + 0xd8]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004418e0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x40565c
jmp 0x405b27
lea eax, [esp + 0xc8]
lea ecx, [esp + 0xa4]
mov edx, dword [0x495b8c]
add edx, 0xbb720dd2
mov dword [0x495b8c], edx
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00402e30
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4056a1
jmp 0x405b27
lea eax, [esp + 0xc8]
xor ecx, ecx
mov edx, dword [0x496b54]
add edx, 0xdad8f0da
mov dword [0x496b54], edx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x30], ecx
call fcn.0042a930
cmp eax, 0
jge 0x405859
lea eax, [esp + 0xa4]
lea ecx, [esp + 0xbc]
mov dx, word [0x4a0590]
mov si, dx
mov edi, esi
dec edi
mov dx, di
mov word [0x4a0590], dx
mov edi, dword [0x498958]
lea esi, [esi + edi - 1]
mov edi, dword [0x499e9c]
xor esi, edi
mov dx, si
mov word [0x49f7a4], dx
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040d500
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x40573b
jmp 0x405b27
mov eax, 0x93d2a7a1
mov ecx, dword [0x496848]
sub ecx, 0x2ac5e6ff
or ecx, 0x528e9f45
cmp eax, ecx
je 0x405769
mov eax, dword [0x49c274]
and eax, 0xc001582
mov dword [0x49c274], eax
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0xe0]
sub ecx, dword [esp + 0xd8]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004418e0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x4057a5
jmp 0x405b27
lea eax, [esp + 0xc8]
lea ecx, [esp + 0xa4]
mov dx, word [0x49d986]
mov si, dx
shl esi, 0xa
mov edi, dword [0x49ce98]
shl edi, 9
and esi, edi
mov dx, word [0x4a0b56]
mov di, dx
or edi, esi
mov dx, di
mov word [0x4a0b56], dx
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.004402e0
mov dword [esp + 0xe4], eax
cmp eax, 0
je 0x405806
jmp 0x405b27
mov eax, dword [0x4968bc]
xor eax, 0x20248041
cmp eax, 0xf78fb7f1
jle 0x40582a
mov eax, dword [0x49b544]
or eax, 0xc946d06f
mov dword [0x49b544], eax
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xd8]
sub eax, ecx
mov ecx, dword [esp + 0xb8]
mov edx, dword [ecx + eax*4 - 4]
dec edx
mov dword [ecx + eax*4 - 4], edx
mov eax, dword [0x49aeb8]
and eax, 0xa360635
mov dword [0x49aeb8], eax
mov eax, dword [0x499d90]
or eax, 0x188ba2a
mov dword [0x499d90], eax
mov eax, dword [esp + 0xe0]
add eax, 0xffffffff
mov dword [esp + 0xe0], eax
jmp 0x4049ec
mov eax, dword [0x4974a4]
inc eax
mov dword [0x4974a4], eax
imul eax, eax, 0x6e5945e6
and eax, 0x63e55cf4
cmp eax, 0x95ae0b95
je 0x4058b7
mov ax, word [0x49eb5a]
mov cx, ax
add ecx, 0x40049032
mov ax, cx
mov word [0x49eb5a], ax
cmp dword [esp + 0xe8], 0
je 0x40595a
mov eax, dword [0x49b368]
shl eax, 0xa
mov ecx, dword [0x498448]
lea eax, [eax + ecx + 0x7250c76a]
mov dword [0x498448], eax
mov eax, dword [esp + 0xe8]
mov ecx, esp
lea edx, [esp + 0xb0]
mov dword [ecx + 4], edx
mov dword [ecx], eax
call fcn.0040d500
mov ecx, dword [0x498998]
inc ecx
mov dword [0x498998], ecx
xor ecx, 0x1166d730
mov edx, dword [0x49c57c]
or edx, 0x960a82da
cmp ecx, edx
mov dword [esp + 0x2c], eax
jle 0x405933
mov eax, dword [0x49c790]
and eax, 0xb48f0daf
mov dword [0x49cf88], eax
mov eax, dword [esp + 0xf0]
mov eax, dword [eax]
mov ecx, dword [esp + 0xf4]
mov ecx, dword [ecx]
imul eax, ecx
mov ecx, dword [esp + 0xe8]
mov dword [ecx], eax
mov word [0x49dbb0], 0xdb09
mov eax, dword [0x499b44]
mov ecx, eax
dec ecx
mov dword [0x499b44], ecx
add eax, 0x58c4e816
or eax, 0x5231
mov dx, word [0x49ecc0]
mov cx, dx
imul ecx, eax
mov dx, cx
mov word [0x49ecc0], dx
cmp dword [esp + 0xec], 0
je 0x405b0d
mov eax, 0x3865aa5c
mov ecx, dword [0x498248]
dec ecx
mov dword [0x498248], ecx
cmp eax, ecx
jl 0x4059c0
mov eax, dword [0x4960d8]
xor eax, 0x8afba9
mov dword [0x4960d8], eax
mov eax, dword [esp + 0xd4]
mov ecx, esp
mov dword [ecx + 4], eax
lea eax, [esp + 0xc8]
mov dword [ecx], eax
mov dword [esp + 0x28], eax
call fcn.00408ad0
mov ecx, dword [0x4998b4]
add ecx, 0x58996071
xor ecx, 0x4d44
mov dx, word [0x49f81e]
mov si, dx
and esi, ecx
mov dx, si
mov word [0x49f81e], dx
mov ecx, dword [esp + 0xec]
mov esi, esp
mov edi, dword [esp + 0x28]
mov dword [esi + 4], edi
mov dword [esi], ecx
mov dword [esp + 0x24], eax
call fcn.0040d500
mov ecx, dword [0x495e68]
and ecx, 0xf1891a80
mov dword [0x495e68], ecx
mov ecx, dword [esp + 0xf0]
mov ecx, dword [ecx]
mov esi, dword [esp + 0xec]
mov dword [esi], ecx
mov ecx, dword [0x4993d0]
xor ecx, 0xffffffff
cmp ecx, 0xa51be357
mov dword [esp + 0x20], eax
jg 0x405aba
mov eax, dword [0x49b7b8]
mov ecx, dword [0x49ba38]
sub eax, ecx
mov ecx, dword [0x49ad94]
mov edx, ecx
dec edx
mov dword [0x49ad94], edx
cmp eax, ecx
jg 0x405aa6
mov ax, word [0x49d84a]
movsx ecx, ax
mov edx, 0x9d87bef
sub edx, ecx
mov ecx, dword [0x49a98c]
imul ecx, edx
mov dword [0x49a98c], ecx
jmp 0x405ab5
mov eax, dword [0x49ce0c]
add eax, 0x7364a93
mov dword [0x49ce0c], eax
jmp 0x405aba
xor eax, eax
mov ecx, dword [esp + 0xec]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x1c], eax
call fcn.0042a930
cmp eax, 0
jne 0x405aed
mov eax, dword [esp + 0xec]
mov dword [eax], 1
mov eax, dword [0x498a58]
shl eax, 5
add eax, 0xc5897b61
xor eax, 0xba22e78a
mov ecx, dword [0x498638]
or ecx, eax
mov dword [0x498638], ecx
mov eax, dword [0x498908]
not eax
or eax, 0x7072dd2f
mov ecx, dword [0x499988]
xor ecx, eax
mov dword [0x499988], ecx
mov eax, 0x96b88aff
mov ecx, esp
lea edx, [esp + 0x98]
mov dword [ecx + 0x10], edx
lea edx, [esp + 0xa4]
mov dword [ecx + 0xc], edx
lea edx, [esp + 0xb0]
mov dword [ecx + 8], edx
lea edx, [esp + 0xbc]
mov dword [ecx + 4], edx
lea edx, [esp + 0xc8]
mov dword [ecx], edx
mov dword [ecx + 0x14], 0
mov dword [esp + 0x18], eax
call fcn.00412f30
mov eax, dword [0x49b89c]
mov ecx, dword [0x497dc4]
mov edx, ecx
dec edx
mov dword [0x497dc4], edx
xor eax, ecx
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jl 0x405ba5
mov eax, dword [0x4975e0]
and eax, 0xa18f607
mov dword [0x4975e0], eax
jmp 0x405c04
mov eax, 0x9448950
mov cx, word [0x49fb14]
movsx edx, cx
mov esi, dword [0x496280]
xor esi, 0xffffffff
or edx, esi
cmp eax, edx
jg 0x405be7
mov eax, dword [0x49cd40]
lea eax, [eax*4 + 0x5d93c58f]
mov ecx, dword [0x497dfc]
imul ecx, eax
mov dword [0x497dfc], ecx
jmp 0x405bff
mov ax, word [0x49ddbc]
mov cx, ax
and ecx, 0xdc28
mov ax, cx
mov word [0x49ddbc], ax
jmp 0x405c04
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xf8]
add esp, 0xfc
pop esi
pop edi
pop ebx
ret