Function at 0x40f140
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x730
mov esi, esp
mov al, byte [esi + 0x208]
mov byte [esi + 0x20c], al
mov byte [esi + 0x88], 0x11
mov byte [esi + 0x89], 0x7b
mov eax, 2
mov byte [esi + eax + 0x88], 0
add eax, 1
cmp eax, 4
jne 0x40f170
xor eax, eax
cmp eax, 4
jae 0x40f1b0
mov dl, byte [esi + eax + 0x88]
mov edi, eax
shl edi, 1
and edi, 0xd6
mov ecx, eax
xor ecx, 0x6b
add ecx, edi
xor cl, dl
add cl, 0xe9
mov byte [esi + eax + 0x88], cl
add eax, 1
jmp 0x40f182
sub esp, 8
lea eax, [esi + 0x88]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00401950
add esp, 8
mov dword [esi + 0xdc], eax
push eax
mov edi, esp
push eax
mov ebx, esp
mov dword [edi], 0x36ceae0e
mov dword [ebx], edi
mov dword [esi + 4], edi
mov dword [esi + 8], ebx
mov eax, dword [edi]
mov ecx, eax
sub ecx, 0x8089798c
je 0x41380c
jmp 0x40f1f7
mov ecx, eax
sub ecx, 0x817c1840
je 0x413f14
jmp 0x40f207
mov ecx, eax
sub ecx, 0x81a0a4ac
je 0x411c2d
jmp 0x40f217
mov ecx, eax
sub ecx, 0x822ff42b
je 0x40fdc1
jmp 0x40f227
mov ecx, eax
sub ecx, 0x84f1da34
je 0x4133fb
jmp 0x40f237
mov ecx, eax
sub ecx, 0x86a4b739
je 0x410be5
jmp 0x40f247
mov ecx, eax
sub ecx, 0x88cd5d8a
je 0x4133e2
jmp 0x40f257
mov ecx, eax
sub ecx, 0x894b85eb
je 0x410ffc
jmp 0x40f267
mov ecx, eax
sub ecx, 0x89b6c092
je 0x4105fc
jmp 0x40f277
mov ecx, eax
sub ecx, 0x8a8f4e13
je 0x411490
jmp 0x40f287
mov ecx, eax
sub ecx, 0x92a09001
je 0x412a7c
jmp 0x40f297
mov ecx, eax
sub ecx, 0x94297597
je 0x410f7d
jmp 0x40f2a7
mov ecx, eax
sub ecx, 0x94376b4f
je 0x410628
jmp 0x40f2b7
mov ecx, eax
sub ecx, 0x96ac9c18
je 0x410ba1
jmp 0x40f2c7
mov ecx, eax
sub ecx, 0x96cd9504
je 0x4112e5
jmp 0x40f2d7
mov ecx, eax
sub ecx, 0x996015bd
je 0x410166
jmp 0x40f2e7
mov ecx, eax
sub ecx, 0x9d61e572
je 0x413d28
jmp 0x40f2f7
mov ecx, eax
sub ecx, 0x9ea9833f
je 0x412d4f
jmp 0x40f307
mov ecx, eax
sub ecx, 0xa009b311
je 0x4132f6
jmp 0x40f317
mov ecx, eax
sub ecx, 0xa15ee606
je 0x410cc9
jmp 0x40f327
mov ecx, eax
sub ecx, 0xa1f6d944
je 0x41205e
jmp 0x40f337
mov ecx, eax
sub ecx, 0xa41a6bcb
je 0x413e5a
jmp 0x40f347
mov ecx, eax
sub ecx, 0xa495861a
je 0x4103ee
jmp 0x40f357
mov ecx, eax
sub ecx, 0xa4a7306c
je 0x41293b
jmp 0x40f367
mov ecx, eax
sub ecx, 0xa55aafa1
je 0x412162
jmp 0x40f377
mov ecx, eax
sub ecx, 0xa576fca8
je 0x411009
jmp 0x40f387
mov ecx, eax
sub ecx, 0xa860fdfb
je 0x413cda
jmp 0x40f397
mov ecx, eax
sub ecx, 0xaa0075ba
je 0x4103fb
jmp 0x40f3a7
mov ecx, eax
sub ecx, 0xaa2bed04
je 0x414100
jmp 0x40f3b7
mov ecx, eax
sub ecx, 0xaa5a5d7c
je 0x412bfb
jmp 0x40f3c7
mov ecx, eax
sub ecx, 0xab7d39b8
je 0x411c6d
jmp 0x40f3d7
mov ecx, eax
sub ecx, 0xab82760f
je 0x41344d
jmp 0x40f3e7
mov ecx, eax
sub ecx, 0xada558c6
je 0x413351
jmp 0x40f3f7
mov ecx, eax
sub ecx, 0xade560e4
je 0x4120b8
jmp 0x40f407
mov ecx, eax
sub ecx, 0xb2d29b32
je 0x4129c8
jmp 0x40f417
mov ecx, eax
sub ecx, 0xb34e391d
je 0x4102e3
jmp 0x40f427
mov ecx, eax
sub ecx, 0xb36b8779
je 0x4125db
jmp 0x40f437
mov ecx, eax
sub ecx, 0xb457d0e2
je 0x410f56
jmp 0x40f447
mov ecx, eax
sub ecx, 0xb46797d5
je 0x410ce9
jmp 0x40f457
mov ecx, eax
sub ecx, 0xb571bc6e
je 0x410c7f
jmp 0x40f467
mov ecx, eax
sub ecx, 0xb59c06fe
je 0x413be8
jmp 0x40f477
mov ecx, eax
sub ecx, 0xb65ebdc3
je 0x413df3
jmp 0x40f487
mov ecx, eax
sub ecx, 0xb9312fc9
je 0x4135c5
jmp 0x40f497
mov ecx, eax
sub ecx, 0xb9e37910
je 0x4125b5
jmp 0x40f4a7
mov ecx, eax
sub ecx, 0xbb0f8e08
je 0x41110e
jmp 0x40f4b7
mov ecx, eax
sub ecx, 0xbd0f5ac5
je 0x413ce7
jmp 0x40f4c7
mov ecx, eax
sub ecx, 0xbe884b0e
je 0x410615
jmp 0x40f4d7
mov ecx, eax
sub ecx, 0xbf0d731e
je 0x413c5c
jmp 0x40f4e7
mov ecx, eax
sub ecx, 0xbf3ffff1
je 0x413cb4
jmp 0x40f4f7
mov ecx, eax
sub ecx, 0xc328da34
je 0x4122ba
jmp 0x40f507
mov ecx, eax
sub ecx, 0xc3c2e96f
je 0x4120a5
jmp 0x40f517
mov ecx, eax
sub ecx, 0xc45f054c
je 0x41232a
jmp 0x40f527
mov ecx, eax
sub ecx, 0xc4b369d1
je 0x412092
jmp 0x40f537
mov ecx, eax
sub ecx, 0xc576769c
je 0x4124ac
jmp 0x40f547
mov ecx, eax
sub ecx, 0xc5b14e33
je 0x41290f
jmp 0x40f557
mov ecx, eax
sub ecx, 0xc5e5c1a2
je 0x410062
jmp 0x40f567
mov ecx, eax
sub ecx, 0xc6e37bc4
je 0x4124f2
jmp 0x40f577
mov ecx, eax
sub ecx, 0xc79c0bed
je 0x412518
jmp 0x40f587
mov ecx, eax
sub ecx, 0xd10d0dfa
je 0x412256
jmp 0x40f597
mov ecx, eax
sub ecx, 0xd54f4a1f
je 0x411eee
jmp 0x40f5a7
mov ecx, eax
sub ecx, 0xd5bd716c
je 0x410e7b
jmp 0x40f5b7
mov ecx, eax
sub ecx, 0xd6048aa3
je 0x412d73
jmp 0x40f5c7
mov ecx, eax
sub ecx, 0xd6f3847d
je 0x413272
jmp 0x40f5d7
mov ecx, eax
sub ecx, 0xd7f031d6
je 0x412568
mov eax, dword [ebx]
mov dword [eax], 0x9d61e572
mov byte [esi + 0x16], 0
jmp 0x414154
mov eax, 0x27ea33e3
cmp dword [esi + 0x4c], 3
je 0x410072
mov eax, 0xc111dda
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, 0xead1c334
test byte [esi + 0x2b], 1
jne 0x410176
mov eax, 0xbe884b0e
mov ecx, dword [ebx]
mov dword [ecx], eax
jmp 0x414154
mov al, byte [esi + 0x1e8]
mov byte [esi + 0x224], al
mov byte [esi + 0x84], 0x8a
mov byte [esi + 0x85], 0x11
mov eax, 2
mov byte [esi + eax + 0x84], 0
add eax, 1
cmp eax, 4
jne 0x410302
xor ebx, ebx
cmp ebx, 4
jae 0x4103ad
movzx eax, byte [esi + ebx + 0x84]
mov dword [esi + 0x48c], eax
mov ecx, ebx
add ecx, 0xd4c21c84
mov edx, eax
shl edx, 1
xor edx, 0xffffffff
add edx, eax
mov edi, 0x2b3de37b
sub edi, ebx
mov eax, 0x2b3de37b
sub eax, ebx
and edi, eax
mov eax, 0x2b3de37b
sub eax, ebx
and eax, 0x76b5177c
and ecx, 0x894ae883
or eax, ecx
xor eax, 0x894ae883
and edi, eax
mov eax, edi
xor eax, 0xffffffff
mov ecx, edx
and ecx, eax
mov eax, edx
xor eax, edi
add edx, eax
mov eax, edx
xor eax, 0xffffffff
mov edi, ecx
add edi, eax
shl edi, 1
sub edx, ecx
add edx, edi
mov ecx, 0xfe
sub ecx, edx
mov eax, ebx
add eax, 0x84
or eax, dword [esi + 0x48c]
and ecx, eax
add cl, 0x6c
mov byte [esi + ebx + 0x84], cl
add ebx, 1
jmp 0x410314
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x84]
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401b00
add esp, 0xc
mov ecx, 0xa495861a
cmp eax, 0
jne 0x4103df
mov ecx, 0xbe884b0e
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], ecx
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0xaa0075ba
jmp 0x414154
mov al, byte [esi + 0x24]
mov byte [esi + 0x22c], al
mov byte [esi + 0x7c], 0x64
mov byte [esi + 0x7d], 0xc9
mov eax, 2
mov byte [esi + eax + 0x7c], 0
add eax, 1
cmp eax, 8
jne 0x410411
xor eax, eax
cmp eax, 8
jae 0x410483
movzx edi, byte [esi + eax + 0x7c]
mov edx, 0xafc9b7d1
sub edx, eax
mov ecx, eax
add ecx, 0x5036482e
and ecx, 0x64697569
and edx, 0x9b968a96
or ecx, edx
xor ecx, edi
xor ecx, 0x64697569
mov edx, 0xd1
sub edx, eax
and edx, edi
or ecx, edx
mov edx, 0xd1
sub edx, eax
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
add edx, 0x6ef09719
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esi + eax + 0x7c], dl
add eax, 1
jmp 0x410420
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x7c]
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401b00
add esp, 0xc
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x2c], al
mov eax, dword [ebx]
mov dword [eax], 0x14f04b8a
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, 0xc111dda
test byte [esi + 0x2d], 1
jne 0x41060c
mov eax, 0x94376b4f
mov ecx, dword [ebx]
mov dword [ecx], eax
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xc111dda
mov edi, dword [esi + 4]
jmp 0x414154
mov al, byte [esi + 0x1e0]
mov byte [esi + 0x234], al
mov byte [esi + 0x42c], 0x60
mov byte [esi + 0x42d], 0xf1
mov eax, 2
mov byte [esi + eax + 0x42c], 0
add eax, 1
cmp eax, 7
jne 0x410647
xor eax, eax
cmp eax, 7
jae 0x41067b
mov cl, byte [esi + eax + 0x42c]
mov dl, al
add dl, 0x2c
xor dl, cl
add dl, 0x24
mov byte [esi + eax + 0x42c], dl
add eax, 1
jmp 0x410659
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x42c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x33c], eax
mov al, byte [esi + 0x1dc]
mov byte [esi + 0x238], al
mov byte [esi + 0x78], 5
mov byte [esi + 0x79], 0x91
mov eax, 2
mov byte [esi + eax + 0x78], 0
add eax, 1
cmp eax, 4
jne 0x4106b5
xor eax, eax
cmp eax, 4
jae 0x410713
movzx ecx, byte [esi + eax + 0x78]
mov edx, eax
add edx, 0x64
mov edi, 0x9b
sub edi, eax
xor edi, 0xc5
and edx, 0xc5
mov dword [esi + 0x330], ecx
xor dword [esi + 0x330], 0xc5
xor ecx, 0xc5
or ecx, dword [esi + 0x330]
or edi, edx
xor ecx, edi
mov dl, 0xb
sub dl, cl
mov byte [esi + eax + 0x78], dl
add eax, 1
jmp 0x4106c4
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x78]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401950
add esp, 8
mov dword [esi + 0x388], eax
mov al, byte [esi + 0x1d8]
mov byte [esi + 0x23c], al
mov byte [esi + 0x74], 0xae
mov byte [esi + 0x75], 0x27
mov eax, 2
mov byte [esi + eax + 0x74], 0
add eax, 1
cmp eax, 4
jne 0x41074a
xor edx, edx
cmp edx, 4
jae 0x4107e6
movzx ecx, byte [esi + edx + 0x74]
mov eax, edx
shl eax, 1
and eax, 0xc428f992
mov dword [esi + 0x338], edx
mov edx, dword [esi + 0x338]
xor edx, 0x62147cc9
add edx, eax
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
mov eax, edx
add eax, edi
mov edi, ecx
xor edi, 0xffffffff
mov dword [esi + 0x464], edi
mov edi, eax
and edi, dword [esi + 0x464]
mov dword [esi + 0x470], edi
mov edi, eax
xor edi, ecx
add eax, edi
xor edx, 0xffffffff
and ecx, edx
mov edx, dword [esi + 0x338]
xor eax, 0xffffffff
mov edi, dword [esi + 0x470]
add edi, eax
or ecx, edi
mov eax, ecx
and eax, 0xee
xor eax, 0xee
and ecx, 0x11
sub ecx, eax
add cl, 1
mov byte [esi + edx + 0x74], cl
add edx, 1
jmp 0x410759
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x74]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x38c], eax
mov al, byte [esi + 0x1d4]
mov byte [esi + 0x240], al
mov byte [esi + 0x424], 0x5c
mov byte [esi + 0x425], 0x31
mov eax, 2
mov byte [esi + eax + 0x424], 0
add eax, 1
cmp eax, 7
jne 0x410823
xor eax, eax
cmp eax, 7
jae 0x41087d
movzx ecx, byte [esi + eax + 0x424]
mov edi, eax
add edi, 0xe62922b4
xor edi, ecx
mov ecx, edi
add ecx, 0x7b
mov edx, edi
add edx, 0x7c
mov dword [esi + 0x46c], edx
mov edx, 0x84
sub edx, edi
or edx, 1
add edx, dword [esi + 0x46c]
or ecx, 1
add edx, ecx
mov byte [esi + eax + 0x424], dl
add eax, 1
jmp 0x410835
mov eax, dword [esi + 0xc]
sub esp, 8
lea ecx, [esi + 0x424]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004018e0
add esp, 8
fnstcw word [esi + 0x94]
movzx eax, word [esi + 0x94]
or eax, 0xc00
mov word [esi + 0x2e4], ax
fldcw word [esi + 0x2e4]
fistp dword [esi + 0x4a8]
fldcw word [esi + 0x94]
mov eax, dword [esi + 0x4a8]
mov dword [esi + 0x4b4], eax
mov al, byte [esi + 0x1d0]
mov byte [esi + 0x244], al
mov byte [esi + 0x48], 0xaa
mov byte [esi + 0x49], 0xda
mov byte [esi + 0x4a], 0x46
mov eax, 3
mov byte [esi + eax + 0x48], 0
add eax, 1
cmp eax, 4
jne 0x4108ec
xor eax, eax
cmp eax, 4
jae 0x410917
mov cl, byte [esi + eax + 0x48]
mov dl, al
add dl, 0x11
xor dl, cl
add dl, 0xab
mov byte [esi + eax + 0x48], dl
add eax, 1
jmp 0x4108fb
mov eax, dword [esi + 0xc]
sub esp, 8
lea ecx, [esi + 0x48]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004018e0
add esp, 8
fnstcw word [esi + 0x92]
movzx eax, word [esi + 0x92]
or eax, 0xc00
mov word [esi + 0x2e2], ax
fldcw word [esi + 0x2e2]
fistp dword [esi + 0x4a4]
fldcw word [esi + 0x92]
mov eax, dword [esi + 0x4a4]
mov dword [esi + 0x4b8], eax
mov al, byte [esi + 0x1cc]
mov byte [esi + 0x248], al
mov byte [esi + 0x320], 0xb6
mov byte [esi + 0x321], 0xaf
mov byte [esi + 0x322], 0x1a
mov eax, 3
mov byte [esi + eax + 0x320], 0
add eax, 1
cmp eax, 6
jne 0x41098c
xor edi, edi
cmp edi, 6
jae 0x410a47
movzx eax, byte [esi + edi + 0x320]
mov dword [esi + 0x484], eax
mov ecx, edi
add ecx, 0xbb
mov edx, edi
add edx, 0xbb
and edx, eax
mov eax, edx
and eax, 0xfd
mov dword [esi + 0x468], eax
mov eax, edx
and eax, 2
xor eax, 2
imul eax, dword [esi + 0x468]
mov dword [esi + 0x334], edx
and dword [esi + 0x334], 2
or edx, 2
imul edx, dword [esi + 0x334]
add edx, eax
add ecx, dword [esi + 0x484]
add ecx, 0xf3
sub ecx, edx
add cl, 0x66
mov byte [esi + edi + 0x320], cl
mov eax, edi
xor eax, 0xfffffffe
mov ecx, edi
or ecx, 1
and ecx, eax
mov eax, ecx
and eax, 5
mov edx, ecx
and edx, 2
xor edx, 2
imul edx, eax
mov eax, ecx
and eax, 2
or ecx, 2
imul ecx, eax
add ecx, edx
xor edi, 1
add edi, ecx
jmp 0x41099e
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x320]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004019b0
add esp, 8
cmp eax, 0
setg al
and al, 1
mov byte [esi + 0x2e], al
sub esp, 4
mov eax, dword [esi + 0x33c]
mov dword [esp], eax
call fcn.004190d0
add esp, 4
mov dword [esi + 0xe4], eax
mov edi, dword [esi + 0xe4]
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410aa8
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x18]
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x33c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
mov eax, dword [0x44d058]
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0xe4]
xor edi, edi
lea edi, [esi + 0x1c8]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edi
call eax
mov cl, byte [esi + 0x1bc]
mov byte [esi + 0x24c], cl
mov byte [esi + 0x1c0], 0xe1
mov byte [esi + 0x1c1], 0xfb
mov byte [esi + 0x1c2], 0xfa
mov byte [esi + 0x1c3], 0xb9
mov ecx, 4
mov byte [esi + ecx + 0x1c0], 0
add ecx, 1
cmp ecx, 5
jne 0x410b4d
xor ecx, ecx
mov edi, dword [esi + 4]
cmp ecx, 5
jae 0x410b84
mov dl, byte [esi + ecx + 0x1c0]
mov dh, cl
add dh, 0xff
xor dh, dl
add dh, 5
mov byte [esi + ecx + 0x1c0], dh
add ecx, 1
jmp 0x410b62
mov edx, dword [esi + 0x1c0]
mov ecx, 0x96ac9c18
cmp eax, edx
jne 0x410b98
mov ecx, 0x86a4b739
mov eax, dword [ebx]
mov dword [eax], ecx
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0x7094ead7
jmp 0x414154
mov eax, dword [esi + 0x1c8]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c01
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0xa0], eax
mov eax, dword [0x44d058]
mov dword [esi + 0x478], eax
mov ecx, dword [esi + 0x1c8]
mov edx, dword [esi + 0xa0]
mov edi, dword [esi + 0x18]
mov ebx, dword [esi + 0xe4]
xor eax, eax
lea eax, [esi + 0x1c8]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call dword [esi + 0x478]
mov ecx, 0xb46797d5
cmp eax, 0
jge 0x410c70
mov ecx, 0xb571bc6e
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], ecx
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x35f5ee4f
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0x543a45ca
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xff782d8
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0xf0]
sub esp, 4
mov dword [esp], eax
call fcn.004190d0
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410eac
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0xf4], eax
mov eax, dword [esi + 0xf4]
mov ecx, dword [esi + 0xf0]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
mov ecx, dword [esi + 0xf4]
mov eax, dword [esi + 0xe8]
mov edx, dword [esi + 0xa0]
mov bl, byte [esi + 0x2e]
mov byte [esi + 0x26], bl
mov edi, dword [esi + 0x4b8]
mov ebx, dword [esi + 0x4b4]
sub esp, 0x1c
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], eax
lea eax, [esi + 0x6a0]
mov dword [esp], eax
movzx eax, byte [esi + 0x26]
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00423910
add esp, 0x1c
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xb457d0e2
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0xf4]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x94297597
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0x3d6dfab
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0xa576fca8
jmp 0x414154
mov eax, dword [esi + 0xa0]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov eax, dword [ebx]
mov dword [eax], 0xb59b500
jmp 0x414154
mov al, byte [esi + 0x1b4]
mov byte [esi + 0x254], al
mov byte [esi + 0x41c], 0x14
mov byte [esi + 0x41d], 0xe7
mov eax, 2
mov byte [esi + eax + 0x41c], 0
add eax, 1
cmp eax, 7
jne 0x41112d
xor eax, eax
cmp eax, 7
jae 0x411161
mov cl, byte [esi + eax + 0x41c]
mov dl, al
add dl, 0xa9
xor dl, cl
add dl, 0xb3
mov byte [esi + eax + 0x41c], dl
add eax, 1
jmp 0x41113f
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x41c]
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401b00
add esp, 0xc
mov ecx, 0x45a1092d
cmp eax, 0
jne 0x411193
mov ecx, 0x40076932
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], ecx
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, 0x26d67759
cmp dword [esi + 0x4c0], 0
jne 0x4112f8
mov eax, 0x40076932
mov ecx, dword [ebx]
mov dword [ecx], eax
jmp 0x414154
mov al, byte [esi + 0x1a0]
mov byte [esi + 0x268], al
mov byte [esi + 0x404], 0xf3
mov byte [esi + 0x405], 0x99
mov eax, 2
mov byte [esi + eax + 0x404], 0
add eax, 1
cmp eax, 8
jne 0x4114af
xor eax, eax
cmp eax, 8
jae 0x411527
movzx edx, byte [esi + eax + 0x404]
mov ecx, eax
add ecx, 0x2242e11a
xor ecx, edx
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x54b19a7d
add edx, edi
mov ebx, edx
and ebx, 2
xor ebx, 2
mov edi, edx
and edi, 0xfd
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
xor ecx, 0x7d
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x404], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4114c1
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x404]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x340], eax
mov al, byte [esi + 0x19c]
mov byte [esi + 0x26c], al
mov byte [esi + 0x68], 0x68
mov byte [esi + 0x69], 0xf9
mov eax, 2
mov byte [esi + eax + 0x68], 0
add eax, 1
cmp eax, 4
jne 0x411561
xor eax, eax
mov ebx, dword [esi + 8]
cmp eax, 4
jae 0x4115a9
mov dl, byte [esi + eax + 0x68]
mov edi, eax
shl edi, 1
and edi, 0x54
mov ecx, eax
xor ecx, 0x2a
add ecx, edi
xor cl, dl
add cl, 0x2e
mov byte [esi + eax + 0x68], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
or eax, edx
xor eax, 1
jmp 0x411573
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x68]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x390], eax
mov al, byte [esi + 0x198]
mov byte [esi + 0x270], al
mov byte [esi + 0x3fc], 0xdf
mov byte [esi + 0x3fd], 0x4b
mov eax, 2
mov byte [esi + eax + 0x3fc], 0
add eax, 1
cmp eax, 7
jne 0x4115e6
xor eax, eax
cmp eax, 7
jae 0x41167c
movzx ecx, byte [esi + eax + 0x3fc]
mov edx, eax
and edx, 0x80963a71
mov ebx, eax
and ebx, 2
xor ebx, 2
mov edi, eax
and edi, 0x80963a71
imul edi, ebx
mov ebx, eax
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esi + 8]
add edx, edi
mov edi, eax
xor edi, 0x80963a73
add edi, edx
xor edi, ecx
mov ecx, edi
shl ecx, 1
and ecx, 2
mov edx, 0x3f
sub edx, edi
and edx, 0xdf
and edi, 0x20
or edx, edi
xor edx, 0xde
add edx, ecx
mov byte [esi + eax + 0x3fc], dl
mov ecx, eax
add ecx, 3
xor edx, edx
sub edx, eax
and edx, 2
and ecx, 0xd
sub ecx, edx
mov eax, ecx
jmp 0x4115f8
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x3fc]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401950
add esp, 8
mov dword [esi + 0x394], eax
mov al, byte [esi + 0x194]
mov byte [esi + 0x274], al
mov byte [esi + 0x3f4], 0xaa
mov byte [esi + 0x3f5], 0x21
mov eax, 2
mov byte [esi + eax + 0x3f4], 0
add eax, 1
cmp eax, 5
jne 0x4116bc
xor edi, edi
cmp edi, 5
jae 0x411757
movzx eax, byte [esi + edi + 0x3f4]
mov ecx, eax
xor ecx, 0xffffffff
mov edx, 0x77
sub edx, edi
or edx, ecx
add edx, edi
mov ecx, 0x77
sub ecx, edi
mov ebx, 0x77
sub ebx, edi
or ecx, ebx
mov ebx, 0x77
sub ebx, edi
and ecx, ebx
and ecx, eax
add edx, 0xe7ee4689
or ecx, edx
mov eax, ecx
xor eax, 0x7a760a8
mov edx, ecx
or edx, 0x78589f57
and edx, eax
shl edx, 1
mov ebx, ecx
shl ebx, 1
and ebx, 0xae
add ecx, 0x78589f57
mov eax, ecx
sub eax, ebx
mov ebx, dword [esi + 8]
add eax, edx
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + edi + 0x3f4], al
add edi, 1
jmp 0x4116ce
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x3f4]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x398], eax
mov al, byte [esi + 0x190]
mov byte [esi + 0x278], al
mov byte [esi + 0x64], 0
mov byte [esi + 0x65], 0x6b
mov eax, 2
mov byte [esi + eax + 0x64], 0
add eax, 1
cmp eax, 4
jne 0x411791
xor eax, eax
cmp eax, 4
jae 0x411801
movzx edx, byte [esi + eax + 0x64]
mov ecx, eax
xor ecx, 0x1bb6a098
mov edi, eax
or edi, 0x64495f67
and edi, ecx
shl edi, 1
mov ebx, eax
shl ebx, 1
and ebx, 0xc892bece
add ebx, 0x9bb6a099
mov ecx, eax
sub ecx, ebx
add ecx, edi
xor ecx, edx
add ecx, 0xa9122fc
mov edi, ecx
xor edi, 0xfffffffe
mov edx, ecx
or edx, 1
and edx, edi
or ecx, 1
mov ebx, ecx
and ebx, edi
shl ebx, 1
xor edx, ecx
add edx, ebx
mov ebx, dword [esi + 8]
mov byte [esi + eax + 0x64], dl
add eax, 1
jmp 0x4117a0
mov eax, dword [esi + 0xc]
sub esp, 8
lea ecx, [esi + 0x64]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004018e0
add esp, 8
fnstcw word [esi + 0x90]
movzx eax, word [esi + 0x90]
or eax, 0xc00
mov word [esi + 0x2e0], ax
fldcw word [esi + 0x2e0]
fistp dword [esi + 0x4b0]
fldcw word [esi + 0x90]
mov eax, dword [esi + 0x4b0]
mov dword [esi + 0x4c4], eax
mov al, byte [esi + 0x18c]
mov byte [esi + 0x27c], al
mov byte [esi + 0x310], 0x9a
mov byte [esi + 0x311], 0xaa
mov byte [esi + 0x312], 0x26
mov eax, 3
mov byte [esi + eax + 0x310], 0
add eax, 1
cmp eax, 8
jne 0x411876
xor eax, eax
cmp eax, 8
jae 0x4118ca
movzx edi, byte [esi + eax + 0x310]
mov edx, 0xc15ab7b6
sub edx, eax
or edx, edi
mov ecx, 0xb6
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
add ecx, 0xb1760d0a
mov edx, ecx
xor edx, 0x77
shl ecx, 1
and ecx, 0x10
sub ecx, edx
mov byte [esi + eax + 0x310], cl
add eax, 1
jmp 0x411888
call fcn.00419520
call fcn.00419520
mov eax, dword [esi + 0xc]
sub esp, 8
lea ecx, [esi + 0x310]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004018e0
add esp, 8
fnstcw word [esi + 0x8e]
movzx eax, word [esi + 0x8e]
or eax, 0xc00
mov word [esi + 0x2de], ax
fldcw word [esi + 0x2de]
fistp dword [esi + 0x4ac]
fldcw word [esi + 0x8e]
mov eax, dword [esi + 0x4ac]
mov dword [esi + 0x4c8], eax
sub esp, 4
mov eax, dword [esi + 0x340]
mov dword [esp], eax
call fcn.004190d0
add esp, 4
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor edi, edi
sub edi, ecx
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41195d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0xf8], eax
mov eax, dword [esi + 0xf8]
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x340]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
mov eax, dword [esi + 0xf8]
lea ecx, [esi + 0x4f8]
sub esp, 4
mov dword [esp], eax
call fcn.00419130
mov eax, dword [ebx]
mov dword [eax], 0x42843c35
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x4d0]
cmp dword [esi + 0x4cc], eax
sete al
and al, 1
mov byte [esi + 0x2f], al
mov eax, dword [ebx]
mov dword [eax], 0xfa294791
jmp 0x414154
mov eax, dword [esi + 0x188]
mov ecx, eax
and ecx, 2
or eax, 2
add ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0043b7e0
add esp, 4
mov dword [esi + 0xa4], eax
mov eax, dword [esi + 0x188]
add eax, 2
mov dword [esi + 0x49c], eax
mov eax, dword [esi + 0x4f8]
mov dword [esi + 0x498], eax
mov eax, dword [esi + 0xa4]
mov dword [esi + 0x490], eax
mov al, byte [esi + 0x290]
mov byte [esi + 0x2d8], al
mov byte [esi + 0x294], 0x65
mov byte [esi + 0x295], 0x66
mov byte [esi + 0x296], 0x67
mov byte [esi + 0x297], 0x60
mov eax, 4
mov byte [esi + eax + 0x294], 0
add eax, 1
cmp eax, 7
jne 0x411ce5
xor eax, eax
cmp eax, 7
jae 0x411d47
movzx edx, byte [esi + eax + 0x294]
mov edi, eax
shl edi, 1
and edi, 0x9c189732
mov ecx, eax
xor ecx, 0x4e0c4b99
mov ebx, ecx
and ebx, edi
shl ebx, 1
xor ecx, edi
add ecx, ebx
xor ecx, edx
add ecx, 0x79c28602
mov edx, ecx
xor edx, 0x7e
mov edi, ecx
or edi, 1
and edi, edx
shl edi, 1
xor ecx, 1
add ecx, edi
mov byte [esi + eax + 0x294], cl
add eax, 1
jmp 0x411cf7
mov eax, dword [esi + 0x294]
mov dword [esi + 0xd4], eax
xor edi, edi
cmp edi, dword [0x44d05c]
jb 0x411d67
mov ecx, 2
jmp 0x411df8
mov edx, dword [0x44d060]
cmp dword [edx + edi*8], 0xfc36c0a1
sete bl
xor ecx, ecx
mov byte [esi + 0x27], bl
test bl, 1
jne 0x411d83
jmp 0x411de8
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0xd4]
je 0x411de8
mov eax, dword [0x44d064]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x498]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0x490]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x49c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043df70
add esp, 0x20
mov ecx, 1
test byte [esi + 0x27], 1
jne 0x411df6
add edi, 1
jmp 0x411d55
jmp 0x411df8
cmp ecx, 2
je 0x411e03
mov dword [esi + 0xd4], eax
mov eax, 0x7787a9b0
cmp dword [esi + 0xd4], 0
jge 0x411e16
mov eax, 0x3f4c150e
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x34c]
mov dword [esi + 0xb0], eax
mov eax, dword [esi + 0xac]
mov ecx, dword [eax]
mov eax, 0x4f6d9a3f
cmp dword [esi + 0xb0], ecx
jae 0x411f14
mov eax, 0x776e6f01
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov eax, dword [esi + 0x3a0]
mov dword [esi + 0x350], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0x556211a1
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xc3c2e96f
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xade560e4
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x4d8]
mov ecx, dword [esi + 0xb4]
mov edx, eax
xor edx, ecx
xor ecx, 0xffffffff
and eax, ecx
shl eax, 1
sub eax, edx
sar eax, 1
sub eax, 0x51b91032
add eax, 1
add eax, 0x51b91032
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4120f6
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0xfc], eax
mov eax, dword [esi + 0xfc]
mov ecx, dword [esi + 0xb4]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00439dd0
add esp, 8
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x69c16755
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x398]
sub esp, 4
mov dword [esp], eax
call fcn.004190d0
add esp, 4
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412193
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0x100], eax
mov eax, dword [esi + 0x100]
mov ecx, dword [esi + 0x398]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
lea ecx, [esi + 0x618]
sub esp, 4
mov dword [esp], 1
call fcn.00408ee0
mov eax, dword [ebx]
mov dword [eax], 0xea3acf2
mov dword [esi + 0x354], 0
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x104]
mov ecx, dword [esi + 0x394]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b40
add esp, 4
mov dword [esp], eax
call fcn.004018c0
add esp, 4
mov dword [esi + 0xb8], eax
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x3eba92e
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xdf401314
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x54e6249b
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xea3acf2
mov eax, dword [esi + 0x4dc]
mov dword [esi + 0x354], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x7d6f152c
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0xfc]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x677e597c
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x296a3bc3
mov edi, dword [esi + 4]
jmp 0x414154
lea ecx, [esi + 0x4f8]
call fcn.00419220
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xc111dda
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, 0xa4a7306c
cmp dword [esi + 0x120], 0
jne 0x412922
mov eax, 0xb2d29b32
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov dword [esi + 0x358], 0
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x120]
sub esp, 4
mov dword [esp], eax
call fcn.004190d0
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41296c
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0x3a4], eax
mov eax, dword [esi + 0x3a4]
mov ecx, dword [esi + 0x120]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
mov eax, dword [ebx]
mov dword [eax], 0xb2d29b32
mov eax, dword [esi + 0x3a4]
mov dword [esi + 0x358], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x358]
mov dword [esi + 0xc4], eax
mov al, byte [esi + 0x16c]
mov byte [esi + 0x2a8], al
mov byte [esi + 0x58], 0x96
mov byte [esi + 0x59], 0x7b
mov eax, 2
mov byte [esi + eax + 0x58], 0
add eax, 1
cmp eax, 4
jne 0x4129ed
xor eax, eax
cmp eax, 4
jae 0x412a32
movzx edx, byte [esi + eax + 0x58]
mov ecx, eax
add ecx, 0x68fc83bf
or ecx, edx
mov edi, eax
add edi, 0xbf
and edi, edx
sub ecx, edi
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x44
add ecx, edx
mov byte [esi + eax + 0x58], cl
add eax, 1
jmp 0x4129fc
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x58]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x124], eax
mov eax, 0x92a09001
cmp dword [esi + 0x124], 0
jne 0x412a63
mov eax, 0x8cd81e5
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov dword [esi + 0x35c], 0
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x124]
sub esp, 4
mov dword [esp], eax
call fcn.004190d0
add esp, 4
mov edi, eax
add edi, 0x2ee64053
add edi, 1
sub edi, 0x2ee64053
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412ab9
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082b0
add esp, 4
mov dword [esi + 0x3a8], eax
mov eax, dword [esi + 0x3a8]
mov ecx, dword [esi + 0x124]
xor edx, edx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
call fcn.0040aa70
add esp, 0x10
mov eax, dword [ebx]
mov dword [eax], 0x8cd81e5
mov eax, dword [esi + 0x3a8]
mov dword [esi + 0x35c], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x128]
sub esp, 4
mov dword [esp], eax
call fcn.00401b60
add esp, 4
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x34]
mov ecx, 0xc
mul ecx
seto cl
add eax, 4
setb byte [esi + 0x3b0]
mov dword [esi + 0x3ac], eax
mov dl, byte [esi + 0x3b0]
mov eax, dword [esi + 0x3ac]
xor cl, 0xff
xor dl, 0xff
mov al, cl
and al, 0xff
mov ah, dl
and ah, 0xff
or al, 0
or ah, 0
xor al, ah
or cl, dl
xor cl, 0xff
and cl, 0xff
or al, cl
and al, 1
mov byte [esi + 0x30], al
mov eax, dword [ebx]
mov dword [eax], 0x330665a3
jmp 0x414154
mov eax, dword [esi + 0x364]
mov dword [esi + 0x54], eax
mov ecx, dword [esi + 0x54]
mov eax, 0x2cffbd49
cmp ecx, dword [esi + 0x34]
jb 0x412d6a
mov eax, 0xd6048aa3
mov ecx, dword [ebx]
mov dword [ecx], eax
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x681155c0
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x34]
mov dword [esi + 0x36c], eax
mov dword [esi + 0x368], ecx
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0x370]
add eax, 0xfffffff4
mov dword [esi + 0x12c], eax
mov ecx, dword [esi + 0x12c]
call fcn.004193b0
mov ecx, dword [esi + 0x12c]
mov eax, 0x38a37162
cmp ecx, dword [esi + 0x1c]
je 0x4132a1
mov eax, 0xd6f3847d
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov eax, dword [esi + 0x12c]
mov dword [esi + 0x370], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0xc0]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov eax, dword [ebx]
mov dword [eax], 0x6d40efbb
jmp 0x414154
mov eax, 0x27c84a7b
cmp dword [esi + 0xc4], 0
je 0x413364
mov eax, 0x3c2deccf
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, 0x470d6568
test byte [esi + 0x33], 1
jne 0x4133f2
mov eax, 0x84f1da34
mov ecx, dword [ebx]
mov dword [ecx], eax
jmp 0x414154
mov eax, dword [esi + 0xc8]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov eax, dword [ebx]
mov dword [eax], 0x470d6568
jmp 0x414154
mov al, byte [esi + 0x158]
mov byte [esi + 0x2c4], al
mov byte [esi + 0x3e4], 0xe0
mov byte [esi + 0x3e5], 0x71
mov eax, 2
mov byte [esi + eax + 0x3e4], 0
add eax, 1
cmp eax, 7
jne 0x41346c
xor eax, eax
cmp eax, 7
jae 0x4134cd
movzx edx, byte [esi + eax + 0x3e4]
mov ecx, eax
add ecx, 0x5a77ba6c
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0x93
sub edi, eax
mov ebx, edx
add ebx, 1
xor edx, 0xffffffff
or edi, edx
add edi, ebx
or ecx, edi
add ecx, 0x3ba95be3
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x3e4], cl
add eax, 1
jmp 0x41347e
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x3e4]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x130], eax
mov al, byte [esi + 0x154]
mov byte [esi + 0x2c8], al
mov byte [esi + 0x3dc], 0xca
mov byte [esi + 0x3dd], 0x31
mov eax, 2
mov byte [esi + eax + 0x3dc], 0
add eax, 1
cmp eax, 7
jne 0x41350d
xor eax, eax
cmp eax, 7
jae 0x41356e
movzx edx, byte [esi + eax + 0x3dc]
mov edi, eax
add edi, 0xf4
and edi, edx
mov ecx, eax
add ecx, 0x7a5813f4
or ecx, edx
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x76
xor ecx, 0x3b
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x3dc], cl
mov ecx, eax
and ecx, 5
or eax, 0x1ef7cc8d
add ecx, eax
add ecx, 0xe1083374
mov eax, ecx
jmp 0x41351f
mov eax, dword [esi + 0xc]
sub esp, 8
lea ecx, [esi + 0x3dc]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00401880
add esp, 8
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0x130]
test eax, eax
sete cl
mov eax, dword [esi + 0x134]
test eax, eax
sete al
or cl, al
mov eax, 0xb9312fc9
test cl, 1
jne 0x4135b6
mov eax, 0x22ff8ac0
mov ebx, dword [esi + 8]
mov ecx, dword [ebx]
mov dword [ecx], eax
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xbf3ffff1
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [esi + 0xcc]
mov ecx, dword [esi + 0x3c]
shl ecx, 3
add eax, ecx
mov dword [esi + 0x4e8], eax
mov eax, dword [ebx]
mov dword [eax], 0x714d217e
mov eax, dword [esi + 0xcc]
mov dword [esi + 0x374], eax
jmp 0x414154
mov eax, dword [esi + 0x3d4]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x6ac230e9
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xa3029b2
mov edi, dword [esi + 4]
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xc111dda
mov edi, dword [esi + 4]
jmp 0x414154
mov eax, dword [ebx]
mov dword [eax], 0xbd0f5ac5
jmp 0x414154
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0x3daecbe2
mov edi, dword [esi + 4]
jmp 0x414154
mov al, byte [esi + 0x16]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esp, 0xc07b35c8
sbb dword [eax], ebp
leave
mov eax, dword [esi + 0x18]
sub esp, 4
mov dword [esp], eax
call fcn.004082c0
add esp, 4
mov ebx, dword [esi + 8]
mov eax, dword [ebx]
mov dword [eax], 0xee8b775b
mov edi, dword [esi + 4]
jmp 0x414154
adc dword [esi + edi*8 - 0x577974cf], esp
add byte [eax], al
add byte [ebx + 0x48904ec], al
and al, 0xe8
push ecx
inc esp
invalid
mov eax, dword [ebx]
mov dword [eax], 0xb9e37910
jmp 0x414154
xor dword [edx], ebx
mov byte [0x28d91f48], al
arpl dx, di
push eax
sbb eax, 0x5955b48e
insb byte es:[edi], dx
add ecx, dword [ecx + 0x38bca7c]
mov dword [eax], 0x672ad2af
jmp 0x414154
jmp 0x40f1e5