Function at 0x40f530
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcb0
mov ecx, dword [0x4469c4]
mov dword [esp + 0x24], 0xabefd396
mov dword [esp + 0xb8], 0
mov eax, dword [esp + 0xb8]
cmp eax, 3
ja 0x40d7d8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xb8]
movzx edx, byte [esp + edx + 0x24]
add eax, 0x6406ac24
xor eax, edx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0x2a0]
add al, 0x74
mov edx, dword [esp + 0xb8]
mov byte [esp + edx + 0x24], al
inc dword [esp + 0xb8]
mov eax, dword [esp + 0xb8]
cmp eax, 4
jb 0x40d790
mov edx, dword [str.LPnhqo__gscxadqptpxr]
mov dword [esp + 0x2a0], 0xdc948483
mov dword [esp + 0x2a4], 0x8c838290
mov dword [esp + 0x2a8], 0x848b8e90
mov dword [esp + 0x2ac], 0x8c9b988b
mov dword [esp + 0x2b0], 0x8bda9699
mov dword [esp + 0x2b4], 0xc1c98193
mov dword [esp + 0x2b8], 0x95d2cbc8
mov dword [esp + 0x2bc], 0xfdc19b97
mov dword [esp + 0x220], 0
mov eax, dword [esp + 0x220]
cmp eax, 0x1f
ja 0x40d89e
nop
nop
nop
mov eax, dword [esp + 0x220]
mov esi, dword [esp + 0x220]
movzx esi, byte [esp + esi + 0x2a0]
add eax, 0x133571e0
xor eax, esi
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
add al, 0xfe
mov esi, dword [esp + 0x220]
mov byte [esp + esi + 0x2a0], al
inc dword [esp + 0x220]
mov eax, dword [esp + 0x220]
cmp eax, 0x20
jb 0x40d850
movzx ebx, byte [esp + 0x2a0]
lea eax, [esp + 0x220]
test bl, bl
je 0x40d8cb
lea esi, [esp + 0x2a1]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40d8c0
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40d8eb
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40d8e0
mov byte [eax], 0
movzx edx, byte [esp + 0x24]
test dl, dl
je 0x40d90b
lea esi, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40d900
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40d92b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40d920
mov byte [eax], 0
mov dword [esp + 0x2a0], 0x3b45397b
mov dword [esp + 0x2a4], 0x3f4a3d42
mov dword [esp + 0x2a8], 0x334c3155
mov dword [esp + 0x2ac], 0x370b3540
mov dword [esp + 0x2b0], 0x4bc3491c
mov dword [esp + 0x2b4], 0x4f2b4d3c
mov dword [esp + 0x2b8], 0x4362410a
mov dword [esp + 0x2bc], 0x47364525
mov dword [esp + 0x2c0], 0x5b265928
mov dword [esp + 0x2c4], 0x5f3d5d25
mov dword [esp + 0x2c8], 0x53265131
mov dword [esp + 0x2cc], 0x5729552d
mov dword [esp + 0x2d0], 0x6b556916
mov dword [esp + 0x2d4], 0x6f536de4
mov dword [esp + 0x2d8], 0x63156117
mov dword [esp + 0x2dc], 0x675b6513
mov dword [esp + 0x2e0], 0x7b05791e
mov dword [esp + 0x2e4], 0x7f037d0e
mov dword [esp + 0x2e8], 0x7307714d
mov dword [esp + 0x2ec], 0x770a7506
mov dword [esp + 0x2f0], 0x8bf489ed
mov dword [esp + 0x2f4], 0x8ff18def
mov dword [esp + 0x2f8], 0x83e781e4
mov dword [esp + 0x2fc], 0x879b85e0
mov dword [esp + 0x300], 0x9b9a9982
mov dword [esp + 0x304], 0
lea ecx, [esp + 0x220]
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x24]
cmp edx, 0x67
ja 0x40dab1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x24]
movzx esi, byte [esp + esi + 0x2a0]
add edx, 0x429bf730
xor edx, esi
mov dword [esp + 0xb8], edx
mov edx, dword [esp + 0xb8]
add dl, 0xf8
mov esi, dword [esp + 0x24]
mov byte [esp + esi + 0x2a0], dl
inc dword [esp + 0x24]
mov edx, dword [esp + 0x24]
cmp edx, 0x68
jb 0x40da70
sub eax, ecx
mov dword [esp + 0xb8], 0x45e14311
mov dword [esp + 0xbc], 0x49ed47d4
mov dword [esp + 0xc0], 0x4b48
mov byte [esp + 0xc4], 0
mov dword [esp + 0x1b8], 0
mov edx, dword [esp + 0x1b8]
cmp edx, 0xc
ja 0x40db5e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x1b8]
mov esi, dword [esp + 0x1b8]
movzx edi, byte [esp + esi + 0xb8]
lea esi, [edx + edi]
add esi, 0x8998d871
add edx, 0x71
and edx, edi
mov edi, esi
not edi
and edi, edx
add edi, edx
not edx
and edx, esi
sub edx, edi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
add dl, 0xcf
mov esi, dword [esp + 0x1b8]
mov byte [esp + esi + 0xb8], dl
inc dword [esp + 0x1b8]
mov edx, dword [esp + 0x1b8]
cmp edx, 0xd
jb 0x40db00
lea edx, [esp + 0xa8]
lea esi, [esp + 0x20]
lea ebx, [esp + 0x2a0]
lea edi, [esp + 0xb8]
push edx
push esi
push eax
push ecx
push ebx
push edi
push 0x44ba88
call fcn.0040c220
add esp, 0x1c
movzx eax, al
xor esi, esi
jmp dword [eax*4 + 0x4473e4]
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x4473fc]
push esi
call fcn.00402960
add esp, 4
mov ebx, eax
jmp dword [0x447404]
push esi
call fcn.00409670
add esp, 4
push ebx
call fcn.00403280
add esp, 4
mov dword [esp + 0x1c], eax
mov word [esp + 0x2a0], 0x1812
mov byte [esp + 0x2a2], 0x66
mov word [esp + 0x2a3], 0
mov byte [esp + 0x2a5], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 5
ja 0x40dc4c
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a0]
add eax, 0x4600d6ec
xor eax, ecx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
mov ecx, eax
xor ecx, 0x88
and eax, 0x77
add eax, eax
sub eax, ecx
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 6
jb case.default.0x40dc67
lea esi, [esp + 0x2a0]
push esi
push dword [esp + 0x20]
call fcn.00403300
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x44740c]
call fcn.00438200
movzx eax, al
jmp dword [eax*4 + 0x447414]
mov word [esp + 0x2a0], 0x9397
mov byte [esp + 0x2a2], 0x36
mov word [esp + 0x2a3], 0
mov byte [esp + 0x2a5], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 5
ja 0x40dd0f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a0]
lea edx, [eax + ecx]
add edx, 0x8d430285
add eax, 0x8d430285
not ecx
or eax, ecx
sub ecx, eax
lea eax, [edx + ecx*2]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
add al, 0x4f
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 6
jb 0x40dcc0
push esi
push dword [esp + 0x20]
call fcn.00403300
add esp, 8
mov dword [esp + 0xa0], eax
mov word [esp + 0x2a0], 0x1c6f
mov byte [esp + 0x2a2], 0xfe
mov dword [esp + 0x2a3], 0
mov byte [esp + 0x2a7], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 7
ja 0x40dd9f
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a0]
add eax, 0xb51f2026
xor eax, ecx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
add al, 0x2a
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 8
jb 0x40dd60
push esi
mov esi, dword [esp + 0x20]
push esi
call fcn.00403300
add esp, 8
mov dword [esp + 0xac], eax
push esi
call fcn.0040eab0
add esp, 4
push ebx
call fcn.004034f0
add esp, 4
lea ebx, [esp + 0x1b8]
mov ecx, ebx
push 1
call fcn.00409e70
push ebx
call fcn.0041ec30
add esp, 4
mov ecx, ebx
call fcn.0040a760
lea ebx, [esp + 0xc40]
mov ecx, ebx
push 3
call fcn.00409e70
push ebx
call fcn.0041f440
add esp, 4
mov ecx, ebx
call fcn.0040a760
lea ebx, [esp + 0xbd8]
mov ecx, ebx
push 1
call fcn.00409e70
push ebx
call fcn.0041f6f0
add esp, 4
mov ecx, ebx
call fcn.0040a760
lea ebx, [esp + 0xb70]
mov ecx, ebx
push 1
call fcn.00409e70
push ebx
call fcn.00421100
add esp, 4
push ebx
call fcn.00421950
add esp, 4
push ebx
call fcn.00421db0
add esp, 4
push ebx
call fcn.00424d10
add esp, 4
mov ecx, ebx
call fcn.0040a760
lea ebx, [esp + 0xb08]
mov ecx, ebx
push 1
call fcn.00409e70
push ebx
call fcn.00423c60
add esp, 4
xor ebx, ebx
cmp dword [esp + 0xac], 0
setg bl
lea ecx, [esp + 0xb08]
call fcn.0040a760
lea esi, [esp + 0xaa0]
mov ecx, esi
push 1
call fcn.00409e70
push esi
call fcn.00429710
add esp, 4
push esi
call fcn.004334f0
add esp, 4
jmp dword [ebx*4 + 0x44741c]
push esi
call fcn.00426b90
add esp, 4
lea ecx, [esp + 0xaa0]
call fcn.0040a760
mov dword [esp + 0x24], 0xbdca4487
mov word [esp + 0x28], 0x93b5
mov byte [esp + 0x2a], 0x57
mov dword [esp + 0x2b], 0
mov dword [esp + 0xb8], 0
mov eax, dword [esp + 0xb8]
cmp eax, 0xa
ja 0x40df65
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xb8]
movzx ecx, byte [esp + ecx + 0x24]
add eax, 0x9a4ea87e
xor eax, ecx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0x2a0]
mov ecx, eax
not ecx
and ecx, 0xd3
and eax, 0x2c
sub eax, ecx
mov ecx, dword [esp + 0xb8]
mov byte [esp + ecx + 0x24], al
inc dword [esp + 0xb8]
mov eax, dword [esp + 0xb8]
cmp eax, 0xb
jb 0x40df10
mov eax, dword [0x4469c4]
mov dword [esp + 8], 0xace610cf
mov dword [esp + 0xc], 0
mov dword [esp + 0xb8], 0
mov ecx, dword [esp + 0xb8]
cmp ecx, 7
ja 0x40dfff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xb8]
movzx edx, byte [esp + edx + 8]
lea esi, [ecx + 0x40114e81]
lea ebx, [ecx + edx]
add ebx, 0x40114e81
add ecx, 0x81
or ecx, esi
and ecx, edx
add ecx, ecx
sub ebx, ecx
mov dword [esp + 0x2a0], ebx
mov ecx, dword [esp + 0x2a0]
add cl, 0xd8
mov edx, dword [esp + 0xb8]
mov byte [esp + edx + 8], cl
inc dword [esp + 0xb8]
mov ecx, dword [esp + 0xb8]
cmp ecx, 8
jb 0x40dfa0
mov ecx, dword [str.LPnhqo__gscxadqptpxr]
mov dword [esp + 0x2a0], 0x90c8b8bb
mov dword [esp + 0x2a4], 0xbec4bab9
mov dword [esp + 0x2a8], 0xc6c7b6cf
mov dword [esp + 0x2ac], 0x6fadb0b7
mov dword [esp + 0x2b0], 0x80deaedc
mov dword [esp + 0x2b4], 0x6790919a
mov dword [esp + 0x2b8], 0x88a0dade
mov byte [esp + 0x2bc], 0x46
mov word [esp + 0x2bd], 0
mov byte [esp + 0x2bf], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0x1f
ja 0x40e0c6
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x2a0]
lea ebx, [edx + esi]
add edx, 2
and edx, esi
add edx, edx
sub ebx, edx
add ebx, 0xc3424302
mov dword [esp + 0xb8], ebx
mov edx, dword [esp + 0xb8]
add dl, 0xa8
mov esi, dword [esp]
mov byte [esp + esi + 0x2a0], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x20
jb 0x40e080
movzx edx, byte [esp + 0x2a0]
test dl, dl
je 0x40e0eb
lea edi, [esp + 0xb8]
lea esi, [esp + 0x2a1]
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40e0e0
mov byte [edi], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40e10b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40e100
mov byte [edi], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40e12b
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40e120
mov byte [edi], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40e14b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40e140
mov byte [edi], 0
movzx eax, byte [esp + 0x24]
test al, al
je 0x40e16b
lea ecx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e160
mov byte [edi], 0
movzx eax, byte [0x44ba28]
test al, al
je 0x40e191
xor ecx, ecx
nop
nop
nop
nop
nop
mov byte [edi + ecx], al
movzx eax, byte [ecx + 0x44ba29]
inc ecx
test al, al
jne 0x40e180
add edi, ecx
mov byte [edi], 0
lea eax, [esp + 0xb8]
mov ecx, eax
not ecx
and ecx, edi
add ecx, ecx
mov dword [esp + 0x2a0], 0x843c82c2
mov dword [esp + 0x2a4], 0x9833863b
mov dword [esp + 0x2a8], 0x9c259a3c
mov dword [esp + 0x2ac], 0x90e29e29
mov dword [esp + 0x2b0], 0x941a92c5
mov dword [esp + 0x2b4], 0xe8329625
mov dword [esp + 0x2b8], 0xec8beaa3
mov dword [esp + 0x2bc], 0xe05fee4c
mov dword [esp + 0x2c0], 0xe45fe251
mov dword [esp + 0x2c4], 0xf844e65c
mov dword [esp + 0x2c8], 0xfc4ffa58
mov dword [esp + 0x2cc], 0xf040fe44
mov dword [esp + 0x2d0], 0xf48cf24f
mov dword [esp + 0x2d4], 0xc88af67d
mov dword [esp + 0x2d8], 0xcc7cca7e
mov dword [esp + 0x2dc], 0xc0b2ce7a
mov dword [esp + 0x2e0], 0xc47cc267
mov dword [esp + 0x2e4], 0xd87ac677
mov dword [esp + 0x2e8], 0xdc6edaa4
mov dword [esp + 0x2ec], 0xd063de6f
mov dword [esp + 0x2f0], 0xd46dd274
mov dword [esp + 0x2f4], 0x2868d676
mov dword [esp + 0x2f8], 0x2c8e2a8d
mov dword [esp + 0x2fc], 0x20322e89
mov dword [esp + 0x300], 0x2423223b
mov dword [esp + 0x304], 0
xor edi, eax
mov dword [esp + 8], 0
mov edx, dword [esp + 8]
cmp edx, 0x67
ja 0x40e327
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 8]
mov esi, dword [esp + 8]
movzx esi, byte [esp + esi + 0x2a0]
add edx, 0x4318fba9
xor edx, esi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
mov esi, edx
not esi
and esi, 0x28
and edx, 0xd7
sub edx, esi
mov esi, dword [esp + 8]
mov byte [esp + esi + 0x2a0], dl
inc dword [esp + 8]
mov edx, dword [esp + 8]
cmp edx, 0x68
jb 0x40e2e0
sub ecx, edi
mov dword [esp + 0x24], 0x61016331
mov dword [esp + 0x28], 0x6d056ffe
mov word [esp + 0x2c], 0x6b6a
mov dword [esp + 0x2e], 0
mov word [esp + 0x32], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xf
ja 0x40e390
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x24]
add edx, 0xb7e05df4
xor edx, esi
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
add dl, 0x6a
mov esi, dword [esp]
mov byte [esp + esi + 0x24], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x10
jb 0x40e360
lea edx, [esp + 0xb0]
lea esi, [esp + 0xa4]
lea ebx, [esp + 0x24]
push edx
push esi
push ecx
push eax
lea esi, [esp + 0x2b0]
push esi
push ebx
push 0x44ba88
call fcn.0040c220
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x447424]
xor edi, edi
xor eax, eax
test edi, 0
setne al
jmp dword [eax*4 + 0x44742c]
push 0x104
lea eax, [esp + 0x2a4]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
jmp dword [0x4473ec]
mov ecx, dword [esp + 0xa8]
mov esi, dword [esp + 0x20]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [esi + ecx - 1]
cmp edx, 0x3d
je 0x40e413
cmp edx, 0x2e
jne 0x40e414
dec eax
movzx ecx, byte [esi + ecx - 2]
cmp ecx, 0x3d
je 0x40e423
cmp ecx, 0x2e
jne 0x40e424
dec eax
push eax
call fcn.00409660
add esp, 4
push eax
push esi
call fcn.00439e00
add esp, 8
push dword [esp + 0x20]
call fcn.0043d3f0
add esp, 4
jmp case.0x40db8f.2
dec eax
push eax
call fcn.00409660
add esp, 4
mov esi, eax
push eax
push ebx
call fcn.00439e00
add esp, 8
push dword [esp + 0x20]
call fcn.0043d3f0
add esp, 4
jmp dword [0x4473f4]
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0x20]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [ebx + ecx - 1]
cmp edx, 0x3d
je 0x40e498
cmp edx, 0x2e
jne 0x40e499
dec eax
movzx ecx, byte [ebx + ecx - 2]
cmp ecx, 0x3d
je 0x40e450
cmp ecx, 0x2e
je 0x40e450
jmp 0x40e451
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa4]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [esi + ecx - 1]
cmp edx, 0x3d
je 0x40e4cd
cmp edx, 0x2e
jne 0x40e4ce
dec eax
movzx ecx, byte [esi + ecx - 2]
cmp ecx, 0x3d
je 0x40e4dd
cmp ecx, 0x2e
jne 0x40e4de
dec eax
push eax
call fcn.00409660
add esp, 4
mov edi, eax
push eax
push esi
call fcn.00439e00
add esp, 8
push dword [esp + 0xa4]
call fcn.0043d3f0
add esp, 4
xor eax, eax
test edi, edi
setne al
lea esi, [esp + 0x2a0]
jmp dword [eax*4 + 0x44742c]
jmp dword [0x447438]
push edi
call fcn.00402960
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push edi
call fcn.00402960
add esp, 4
jmp dword [0x44743c]
jmp dword [0x447444]
push edi
mov esi, eax
call fcn.00409670
mov eax, esi
add esp, 4
push eax
mov esi, eax
call fcn.00411ca0
add esp, 4
push esi
call fcn.004034f0
add esp, 4
lea esi, [esp + 0x2a0]
mov dword [esp + 0x2a0], 0x148cf887
mov word [esp + 0x2a4], 0
mov byte [esp + 0x2a6], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 6
ja 0x40e5d9
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x2a0]
add eax, 0xe92896c6
xor eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
add al, 0x23
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 7
jb 0x40e5a0
push esi
push dword [esp + 0x20]
call fcn.00403300
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x44744c]
xor eax, eax
cmp dword [esp + 0xa0], 0
setg al
jmp dword [eax*4 + 0x447464]
lea ecx, [esp + 0x2a0]
push 1
call fcn.00409e70
mov eax, 0xffffffff
nop
nop
nop
nop
nop
cmp byte [eax + 0x44bd91], 0
lea eax, [eax + 1]
jne 0x40e620
lea ecx, [eax + 0x44bd90]
mov edx, 0x44bd90
mov eax, 0x44bd90
not eax
and eax, ecx
add eax, eax
mov dword [esp + 0x24], 0xcbdfddff
mov dword [esp + 0x28], 0xb8c500c6
mov word [esp + 0x2c], 0x32c7
mov dword [esp + 0x2e], 0
mov byte [esp + 0x32], 0
xor ecx, edx
sub eax, ecx
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x40e6b0
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
add ecx, 0x4ef7e172
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0xb7
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xf
jb 0x40e680
lea esi, [esp + 0x2a0]
mov ecx, esi
push eax
push 0x44bd90
push ebx
call fcn.0040a070
mov ecx, esi
call fcn.0040a760
mov ecx, esi
call fcn.00409eb0
xor eax, eax
cmp dword [esp + 0xa0], 0
setg al
lea esi, [esp + 0x2a0]
jmp dword [eax*4 + 0x447464]
push 0
call fcn.00440ca0
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44746c]
mov dword [esp + 0x24], 0x9e507e5
mov dword [esp + 0x28], 0xd220bee
mov dword [esp + 0x2c], 0x31a80feb
mov dword [esp + 0x30], 0x351433d7
mov dword [esp + 0x34], 0x39ab3714
mov dword [esp + 0x38], 0x3ddd3bae
mov dword [esp + 0x3c], 0x21b43fac
mov dword [esp + 0x40], 0x250b2302
mov dword [esp + 0x44], 0x29c127cb
mov dword [esp + 0x48], 0x2d0c2bc4
mov dword [esp + 0x4c], 0xd13d2fcd
mov dword [esp + 0x50], 0xd5fad336
mov dword [esp + 0x54], 0xd940d733
mov dword [esp + 0x58], 0xddfcdb3f
mov dword [esp + 0x5c], 0xc1efdffc
mov dword [esp + 0x60], 0xc5e4c321
mov dword [esp + 0x64], 0xc921c752
mov dword [esp + 0x68], 0xcd29cb27
mov dword [esp + 0x6c], 0xf165cf21
mov dword [esp + 0x70], 0xf5d4f366
mov dword [esp + 0x74], 0xf96cf7d9
mov dword [esp + 0x78], 0xfd2ffbda
mov dword [esp + 0x7c], 0xe1cfffde
mov dword [esp + 0x80], 0xe50be30c
mov dword [esp + 0x84], 0xe97ae704
mov dword [esp + 0x88], 0xed0deb0f
mov dword [esp + 0x8c], 0x91b0ef05
mov dword [esp + 0x90], 0x95b493b4
mov dword [esp + 0x94], 0x997d9772
mov dword [esp + 0x98], 0x9dbc9b76
mov dword [esp + 0x9c], 0x81809fbc
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x7b
ja 0x40e86b
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x24]
add ecx, 0x83ca54d6
xor ecx, edx
mov dword [esp + 0x2a0], ecx
mov ecx, dword [esp + 0x2a0]
add cl, 0x30
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x24], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x7c
jb 0x40e830
movzx ecx, word [esp + 0x24]
test cx, cx
je 0x40e891
lea esi, [esp + 0x2a0]
lea edx, [esp + 0x26]
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x40e880
mov word [esi], 0
movzx ecx, word [eax]
test cx, cx
je 0x40e8c1
add eax, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x40e8b0
mov dword [esi], 0x220022
mov dword [esi + 4], 0x22
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0x44
mov dword [esp + 0x50], 1
push 0xc9be8534
push dword [0x44cd90]
call fcn.00440db0
add esp, 8
lea ecx, [esp + 8]
lea edx, [esp + 0x2a0]
push ecx
push ebx
push 0
push 0
push 0x8000000
push 0
push 0
push 0
push edx
push 0
call eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447474]
mov eax, dword [esp + 8]
mov dword [esp], 0x2b282956
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x18]
cmp ecx, 6
ja 0x40e9f9
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
movzx edx, byte [esp + edx]
add ecx, 0x52ff67bf
xor ecx, edx
mov dword [esp + 0xb4], ecx
mov ecx, dword [esp + 0xb4]
add cl, 0x16
mov edx, dword [esp + 0x18]
mov byte [esp + edx], cl
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
cmp ecx, 7
jb 0x40e9c0
mov ecx, dword [0x44cd9c]
test ecx, ecx
je case.0x40e6e7.4
mov edx, dword [esp]
xor esi, esi
mov edi, dword [0x44cda0]
nop
nop
cmp dword [edi + esi*8], 0x625b6034
je 0x40ea2d
inc esi
cmp ecx, esi
jne 0x40ea10
jmp case.0x40e6e7.4
push ebx
call fcn.004034f0
add esp, 4
xor eax, eax
jmp 0x40ea9c
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je case.0x40e6e7.4
push eax
push 1
push dword [0x44cda4]
push ecx
call fcn.0043f410
add esp, 0x10
mov eax, dword [case.0x40e6e7.0]
nop
nop
nop
nop
jmp eax
lea ecx, [esp + 0xaa0]
call fcn.00409eb0
lea ecx, [esp + 0xb08]
call fcn.00409eb0
lea ecx, [esp + 0xb70]
call fcn.00409eb0
lea ecx, [esp + 0xbd8]
call fcn.00409eb0
lea ecx, [esp + 0xc40]
call fcn.00409eb0
lea ecx, [esp + 0x1b8]
call fcn.00409eb0
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
push eax
mov eax, esp
mov word [eax], 0x583c
mov dword [eax + 2], 0
mov byte [eax + 6], 0
mov dword [esi + 4], 0
mov ecx, dword [esi + 4]
cmp ecx, 6
ja 0x40eb1c
nop
nop
nop
mov ecx, dword [esi + 4]
mov edx, dword [esi + 4]
movzx edx, byte [eax + edx]
add ecx, 0xcf3b2040
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0xe7
mov edx, dword [esi + 4]
mov byte [eax + edx], cl
inc dword [esi + 4]
mov ecx, dword [esi + 4]
cmp ecx, 7
jb 0x40eaf0
push eax
push edi
call fcn.004032a0
add esp, 8
jmp case.0x40e6e7.11
push eax
push edi
call fcn.004032a0
add esp, 8
jmp dword [0x447494]
push eax
push eax
mov eax, esp
sub esp, 8
mov dword [esi + 0x2c], esp
sub esp, 8
mov dword [esi + 0xe0], esp
sub esp, 8
mov dword [esi + 0x68], esp
sub esp, 8
mov dword [esi + 0xc8], esp
sub esp, 8
mov dword [esi + 0xc0], esp
sub esp, 8
mov dword [esi + 0x148], esp
sub esp, 8
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x144], esp
push eax
mov dword [esi + 0x140], esp
push eax
mov dword [esi + 0x13c], esp
sub esp, 8
mov dword [esi + 0x138], esp
sub esp, 8
mov ebx, esp
push eax
mov dword [esi + 0x134], esp
push eax
mov dword [esi + 0xac], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x60], ecx
mov esp, ecx
push eax
mov dword [esi + 0x154], esp
sub esp, 8
mov dword [esi + 0xc4], esp
sub esp, 8
mov dword [esi + 0x7c], esp
sub esp, 8
mov dword [esi + 0xbc], esp
push eax
mov dword [esi + 0xcc], esp
sub esp, 8
mov dword [esi + 0x130], esp
sub esp, 8
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0x12c], esp
sub esp, 8
mov dword [esi + 0xb4], esp
push eax
mov dword [esi + 0x128], esp
sub esp, 8
mov dword [esi + 0xb0], esp
sub esp, 8
mov dword [esi + 0x78], esp
sub esp, 0xc
mov dword [esi + 0x3c], esp
push eax
mov dword [esi + 0x74], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x5c], ecx
mov esp, ecx
push eax
push eax
mov dword [esi + 0xdc], esp
sub esp, 8
mov dword [esi + 0xd8], esp
sub esp, 8
mov dword [esi + 0x150], esp
sub esp, 8
mov dword [esi + 0x168], esp
sub esp, 8
mov dword [esi + 0x164], esp
sub esp, 8
mov dword [esi + 0xe4], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x6c], ecx
mov esp, ecx
push eax
sub esp, 8
mov dword [esi + 0x80], esp
sub esp, 8
mov dword [esi + 0x40], esp
sub esp, 0x50
mov dword [esi + 0x34], esp
sub esp, 8
mov dword [esi + 0xd4], esp
sub esp, 8
mov dword [esi + 0xd0], esp
push eax
mov dword [esi + 0x14c], esp
sub esp, 8
mov dword [esi + 0x160], esp
sub esp, 8
mov dword [esi + 0x15c], esp
sub esp, 8
mov dword [esi + 0x158], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x84], ecx
mov esp, ecx
mov word [eax], 0x583c
mov dword [eax + 2], 0
mov byte [eax + 6], 0
mov dword [esi + 4], 0
mov ecx, dword [esi + 4]
cmp ecx, 6
ja 0x40eb30
nop
nop
nop
nop
mov ecx, dword [esi + 4]
mov edx, dword [esi + 4]
movzx edx, byte [eax + edx]
add ecx, 0xcf3b2040
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0xe7
mov edx, dword [esi + 4]
mov byte [eax + edx], cl
inc dword [esi + 4]
mov ecx, dword [esi + 4]
cmp ecx, 7
jb 0x40ecf0
jmp 0x40eb30
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x44749c]
mov ecx, dword [esi + 0x40]
inc ecx
mov dword [esi + 0xa8], ecx
mov ecx, dword [esi + 0x78]
add ecx, 3
mov dword [esi + 0x9c], ecx
mov ecx, dword [esi + 0xb0]
add ecx, 2
mov dword [esi + 0xf4], ecx
mov ecx, dword [esi + 0xb4]
add ecx, 2
mov dword [esi + 0xf0], ecx
mov ecx, dword [esi + 0xb8]
add ecx, 2
mov dword [esi + 0xec], ecx
mov ecx, dword [esi + 0xbc]
add ecx, 2
mov dword [esi + 0x100], ecx
mov ecx, dword [esi + 0xc4]
add ecx, 2
mov dword [esi + 0x10c], ecx
mov ecx, dword [esi + 0xd0]
add ecx, 2
mov dword [esi + 0x11c], ecx
mov ecx, dword [esi + 0xd4]
add ecx, 2
mov dword [esi + 0x118], ecx
mov ecx, dword [esi + 0xe4]
add ecx, 4
mov dword [esi + 0x124], ecx
mov ecx, dword [esi + 0xd8]
add ecx, 2
mov dword [esi + 0x114], ecx
mov ecx, dword [esi + 0xdc]
add ecx, 2
mov dword [esi + 0x110], ecx
mov dword [esi + 0xfc], ebx
mov ecx, ebx
add ecx, 3
mov dword [esi + 0xf8], ecx
mov ecx, dword [esi + 0x64]
add ecx, 3
mov dword [esi + 0xa0], ecx
mov ecx, dword [esi + 0xc0]
add ecx, 2
mov dword [esi + 0x104], ecx
mov ecx, dword [esi + 0xc8]
add ecx, 2
mov dword [esi + 0x108], ecx
mov ecx, dword [esi + 0x68]
add ecx, 2
mov dword [esi + 0xa4], ecx
mov ecx, dword [esi + 0xe0]
add ecx, 2
mov dword [esi + 0x120], ecx
mov edi, dword [esi + 0x2c]
mov ecx, edi
add ecx, 2
mov dword [esi + 0xe8], ecx
xor ebx, ebx
jmp 0x40ee5d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esi + 0x88]
inc ebx
mov eax, dword [esi + 0x8c]
mov dword [esi + 0x8c], eax
push eax
call fcn.004034b0
add esp, 4
xor ecx, ecx
cmp ebx, eax
setb cl
mov al, 1
jmp dword [ecx*4 + 0x4474b4]
mov dword [esi + 0x88], ebx
jmp dword [0x4474c0]
push dword [esi + 0x88]
push dword [esi + 0x8c]
call fcn.004034c0
add esp, 8
mov word [edi], 0xea7d
mov ecx, dword [esi + 0xe8]
mov word [ecx], 0
mov byte [ecx + 2], 0
mov dword [esi + 4], 0
mov ecx, dword [esi + 4]
cmp ecx, 4
ja 0x40eeec
nop
mov ecx, dword [esi + 4]
mov edx, dword [esi + 4]
movzx edx, byte [edi + edx]
add ecx, 0x86f993d9
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0xd0
mov edx, dword [esi + 4]
mov byte [edi + edx], cl
inc dword [esi + 4]
mov ecx, dword [esi + 4]
cmp ecx, 5
jb 0x40eec0
push 3
push edi
push eax
call fcn.00403450
add esp, 0xc
jmp case.0x40e510.37
push 3
push edi
push ebx
call fcn.00403450
add esp, 0xc
jmp dword [0x4474c8]
push dword [esi + 0x88]
push dword [esi + 0x8c]
call fcn.004034c0
add esp, 8
mov ebx, eax
mov word [edi], 0xea7d
mov eax, dword [esi + 0xe8]
mov word [eax], 0
mov byte [eax + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40ef00
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edi + ecx]
add eax, 0x86f993d9
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xd0
mov ecx, dword [esi + 4]
mov byte [edi + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb 0x40ef50
jmp 0x40ef00
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x4474cc]
mov edx, dword [esi + 0xe0]
mov word [edx], 0xe972
mov eax, dword [esi + 0x120]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x40efea
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xad230e9b
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x8b
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x40efc0
push edx
push ebx
call fcn.00403230
add esp, 8
fnstcw word [esi + 0x56]
movzx eax, word [esi + 0x56]
or eax, 0xc00
mov word [esi + 0x9a], ax
fldcw word [esi + 0x9a]
fistp dword [esi + 0x17c]
fldcw word [esi + 0x56]
mov eax, dword [esi + 0x17c]
xor ecx, ecx
cmp eax, 2
setl cl
jmp dword [ecx*4 + 0x4474d4]
xor ecx, ecx
cmp eax, 3
setl cl
jmp dword [ecx*4 + 0x4474dc]
sete al
movzx eax, al
jmp dword [eax*4 + 0x4474e4]
mov edx, dword [esi + 0x154]
mov dword [edx], 0x45bf
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 3
ja 0x40f09a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x765aea0a
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xb2
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 4
jb 0x40f070
push 2
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447584]
mov edx, dword [esi + 0xc4]
mov word [edx], 0xfd4e
mov eax, dword [esi + 0x10c]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x40f10a
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x19f04c5d
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x5d
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb case.default.0x40f11d
push 2
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44758c]
mov edx, dword [esi + 0x7c]
mov word [edx], 0x42f0
mov dword [edx + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 5
ja 0x40f197
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x7c]
movzx edx, byte [edx + ecx]
lea ecx, [eax + edx]
add ecx, 0x712f232b
add eax, 0x712f232b
and eax, edx
mov edx, ecx
not edx
and edx, eax
add edx, eax
not eax
and eax, ecx
sub eax, edx
mov edx, dword [esi + 0x7c]
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x92
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 6
jb 0x40f150
push 5
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447594]
mov edx, dword [esi + 0xbc]
mov word [edx], 0xa62d
mov eax, dword [esi + 0x100]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x40f20a
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xecfe22fa
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xa3
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x40f1e0
push 2
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44759c]
mov edx, dword [esi + 0xcc]
mov dword [edx], 0xfd5a
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 3
ja 0x40f27d
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
lea edx, [eax + ecx]
add edx, 0x1f072a5d
add eax, 0x1f072a5d
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esi + 8], edx
mov edx, dword [esi + 0xcc]
mov eax, dword [esi + 8]
add al, 0x5d
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 4
jb 0x40f240
push 3
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x4475a4]
mov edx, dword [esi + 0x130]
mov word [edx], 0x4c58
mov byte [edx + 2], 0xc0
mov dword [edx + 3], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x40f2ea
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xfa24fc7d
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x41
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x40f2c0
push 3
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x4475ac]
mov edx, dword [esi + 0xb8]
mov word [edx], 0x6eca
mov eax, dword [esi + 0xec]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x40f35a
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x84831ddd
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x50
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x40f330
push edx
push ebx
call fcn.004031d0
add esp, 8
mov edx, dword [esi + 0x12c]
mov dword [edx], 0xd6a7
mov dword [esi + 4], 0
mov ecx, dword [esi + 4]
cmp ecx, 3
ja 0x40f3b0
nop
mov edi, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add edi, 0x1c369154
xor edi, ecx
mov dword [esi + 8], edi
mov edi, edx
mov edx, dword [esi + 8]
add dl, 0x7d
mov ecx, dword [esi + 4]
mov byte [edi + ecx], dl
mov edx, edi
inc dword [esi + 4]
mov ecx, dword [esi + 4]
cmp ecx, 4
jb 0x40f380
mov dword [esi + 0x20], eax
push edx
push ebx
call fcn.004031d0
add esp, 8
mov dword [esi + 0x44], eax
mov edx, dword [esi + 0xb4]
mov word [edx], 0xf264
mov eax, dword [esi + 0xf0]
mov word [eax], 0
mov byte [eax + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40f41a
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xe705424d
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x44
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb 0x40f3f0
push edx
push ebx
call fcn.004032a0
add esp, 8
mov edi, eax
mov edx, dword [esi + 0x128]
mov dword [edx], 0x8500
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 3
ja 0x40f47a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xfa1d3cb9
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xc1
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 4
jb 0x40f450
push edx
push ebx
call fcn.004031d0
add esp, 8
mov dword [esi + 0x48], eax
mov dword [esi + 0x28], edi
mov edx, dword [esi + 0xb0]
mov word [edx], 0x41dc
mov eax, dword [esi + 0xf4]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x40f4ea
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xe634eddc
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x64
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x40f4c0
push edx
push ebx
call fcn.00403230
add esp, 8
fnstcw word [esi + 0x54]
movzx eax, word [esi + 0x54]
or eax, 0xc00
mov word [esi + 0x98], ax
fldcw word [esi + 0x98]
fistp dword [esi + 0x170]
fldcw word [esi + 0x54]
mov eax, dword [esi + 0x170]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x20]
not eax
mov dword [esi + 0x24], eax
jmp dword [0x4475b8]
xor ecx, ecx
test eax, eax
setle cl
jmp dword [ecx*4 + 0x4474ec]
mov edx, dword [esi + 0xdc]
mov word [edx], 0xe273
mov eax, dword [esi + 0x110]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40f59a
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xefe36f3e
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x23
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb 0x40f570
push edx
push ebx
call fcn.004031d0
add esp, 8
mov dword [esi + 0x18], eax
mov edx, dword [esi + 0xd8]
mov word [edx], 0x911a
mov eax, dword [esi + 0x114]
mov word [eax], 0
mov byte [eax + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40f5fa
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xe7a4b30c
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x64
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb case.default.0x40f616
push edx
push ebx
call fcn.004031d0
add esp, 8
mov ebx, dword [esi + 0x18]
test ebx, ebx
sete dl
test eax, eax
sete cl
or cl, dl
movzx ecx, cl
jmp dword [ecx*4 + 0x447634]
mov ecx, ebx
nop
mov edx, ecx
inc ecx
cmp byte [edx], 0
jne 0x40f620
mov dword [esi + 0x1c], eax
mov ecx, edx
mov eax, dword [esi + 0x18]
xor ecx, eax
mov edi, eax
not edi
and edi, edx
add edi, edi
sub edi, ecx
mov edx, eax
add edx, edi
xor ebx, ebx
mov dword [esi + 0x28], edi
test edi, edi
mov dword [esi + 0x10], edx
jle 0x40f692
cmp byte [eax], 0
je 0x40f692
xor ebx, ebx
mov edi, dword [esi + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push edx
push edi
call fcn.0040d5f0
mov edx, dword [esi + 0x10]
add esp, 0xc
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
lea ecx, [edi + eax]
cmp ecx, edx
jae 0x40f692
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40f660
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x40f6a0
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + ebx*2]
mov dword [esi + 0x14], eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], ecx
cmp eax, ecx
mov ecx, dword [esi + 0x1c]
mov edi, dword [esi + 0x18]
jae 0x40fe6e
mov eax, dword [esi + 0x24]
mov dword [esi + 0x14], eax
cmp dword [esi + 0x28], 0
jle 0x40fe6e
mov eax, dword [esi + 0x24]
mov dword [esi + 0x14], eax
cmp byte [edi], 0
je 0x40fe6e
lea eax, [esi + 8]
push eax
mov ebx, dword [esi + 0x10]
push ebx
push edi
call fcn.0040d5f0
add esp, 0xc
movzx ecx, word [esi + 8]
mov edx, dword [esi + 0x14]
mov word [edx], cx
add edx, 2
mov dword [esi + 0x14], edx
cmp edx, dword [esi + 0x20]
jae 0x40fe6b
add edi, eax
cmp edi, ebx
mov ecx, dword [esi + 0x1c]
jb 0x40f6e0
jmp 0x40fe6e
mov edx, dword [esi + 0xd4]
mov word [edx], 0x293
mov eax, dword [esi + 0x118]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40f77a
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x8dd3d652
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xaf
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb 0x40f750
push edx
push ebx
call fcn.004031d0
add esp, 8
mov dword [esi + 0x14], eax
mov edx, dword [esi + 0xd0]
mov word [edx], 0x71ea
mov eax, dword [esi + 0x11c]
mov word [eax], 0
mov byte [eax + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40f7da
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x85940a60
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xf0
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb case.default.0x40f7f6
push edx
push ebx
call fcn.004031d0
add esp, 8
mov ebx, dword [esi + 0x14]
test ebx, ebx
sete dl
test eax, eax
sete cl
or cl, dl
movzx ecx, cl
jmp dword [ecx*4 + 0x4476bc]
mov dword [esi + 0x20], eax
mov ecx, ebx
mov edx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
inc ecx
cmp byte [eax], 0
jne 0x40f810
mov ecx, eax
xor ecx, edx
mov edi, edx
not edi
and edi, eax
add edi, edi
sub edi, ecx
mov eax, edx
add eax, edi
mov dword [esi + 0x10], eax
xor ebx, ebx
mov dword [esi + 0x18], edi
test edi, edi
jle 0x40f882
cmp byte [edx], 0
mov edx, dword [esi + 0x10]
je 0x40f882
xor ebx, ebx
mov edi, dword [esi + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push edx
push edi
call fcn.0040d5f0
mov edx, dword [esi + 0x10]
add esp, 0xc
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
lea ecx, [edi + eax]
cmp ecx, edx
jae 0x40f882
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40f850
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x40f890
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + ebx*2]
mov edx, eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x1c], ecx
cmp eax, ecx
mov edi, dword [esi + 0x14]
mov ebx, dword [esi + 0x10]
jae 0x40f8fe
mov edx, dword [esi + 0x24]
cmp dword [esi + 0x18], 0
jle 0x40f8fe
mov edx, dword [esi + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40f8fe
lea eax, [esi + 8]
push eax
push ebx
push edi
mov dword [esi + 0x14], edx
call fcn.0040d5f0
mov edx, dword [esi + 0x14]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x1c]
jae 0x40f8fe
add edi, eax
cmp edi, ebx
jb 0x40f8d0
mov word [edx], 0
xor eax, eax
mov ecx, dword [esi + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx + eax], 0
lea eax, [eax + 1]
jne 0x40f910
add eax, ecx
dec eax
mov ebx, ecx
not ebx
and ebx, eax
xor eax, ecx
add ebx, ebx
sub ebx, eax
mov eax, ebx
and eax, 1
mov ecx, ebx
xor ecx, 1
lea edi, [ecx + eax*2]
lea eax, [edi + edi]
test edi, edi
jns 0x40f941
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov dword [esi + 0x38], eax
lea ecx, [eax + edi*2]
cmp dword [esi + 0x20], 0
jne 0x40f96b
mov eax, 0xffffffff
nop
nop
nop
nop
nop
lea ebx, [eax + 1]
cmp byte [eax + 1], 0
mov eax, ebx
jne 0x40f960
mov dword [esi + 8], 0
add ecx, 0xfffffffe
mov eax, dword [esi + 0x38]
mov edx, eax
mov dword [esi + 0x14], ecx
cmp eax, ecx
mov eax, dword [esi + 0x20]
jae 0x40f9d2
mov edx, dword [esi + 0x38]
test ebx, ebx
jle 0x40f9d2
mov edi, eax
add edi, ebx
mov edx, dword [esi + 0x38]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax], 0
je 0x40f9d2
mov ebx, eax
lea eax, [esi + 8]
push eax
push edi
push ebx
mov dword [esi + 0x10], edx
call fcn.0040d5f0
mov edx, dword [esi + 0x10]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x14]
jae 0x40f9d2
add ebx, eax
cmp ebx, edi
mov eax, ebx
jb 0x40f9a0
mov word [edx], 0
mov edx, dword [esi + 0x14c]
mov dword [edx], 0x46dfd3
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 3
ja 0x40fa2a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x9dc4af33
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x8d
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 4
jb 0x40fa00
push edx
push dword [ebp + 8]
call fcn.004032a0
add esp, 8
xor ecx, ecx
mov dword [esi + 0x28], eax
test eax, eax
setne cl
mov dword [esi + 0x20], 0
mov dword [esi + 0x18], 0
mov edi, dword [esi + 0x2c]
jmp dword [ecx*4 + 0x4476c4]
mov ebx, dword [esi + 0x84]
mov ecx, ebx
push 3
call fcn.00409e70
push dword [esi + 0x18]
push dword [esi + 0x20]
push dword [esi + 0x38]
push dword [esi + 0x24]
push ebx
call fcn.00416a20
add esp, 0x14
mov ecx, ebx
mov ebx, dword [esi + 0x20]
call fcn.0040a760
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x4476f4]
sete al
movzx eax, al
jmp dword [eax*4 + 0x4474f4]
mov edx, dword [esi + 0x68]
jmp dword [0x447500]
push dword [esi + 0x28]
call fcn.004034b0
add esp, 4
mov ecx, eax
mov dword [esi + 0x18], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov edi, 0xffffffff
add eax, 4
jb 0x40fb71
mov edi, eax
test dl, dl
jne 0x40fb77
mov ecx, edi
push ecx
call fcn.00409660
add esp, 4
mov edx, dword [esi + 0x18]
mov dword [eax], edx
add eax, 4
xor ecx, ecx
test edx, edx
sete cl
jmp dword [ecx*4 + 0x4476cc]
mov ecx, dword [esi + 0x18]
lea ecx, [ecx + ecx*2]
lea edi, [eax + ecx*4]
mov ecx, eax
jmp dword [0x4476e0]
mov dword [esi + 0x20], eax
xor ecx, ecx
xor eax, eax
cmp ecx, dword [esi + 0x18]
setb al
mov edi, dword [esi + 0x2c]
jmp dword [eax*4 + 0x4476ec]
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
mov word [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx + eax], 0
lea eax, [eax + 1]
jne 0x40fe80
add eax, ecx
dec eax
mov edi, ecx
not edi
and edi, eax
xor eax, ecx
add edi, edi
sub edi, eax
mov edx, ecx
add edx, edi
xor ebx, ebx
mov dword [esi + 0x18], edi
test edi, edi
mov dword [esi + 0x14], edx
jle 0x40fef2
cmp byte [ecx], 0
je 0x40fef2
xor ebx, ebx
mov edi, dword [esi + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push edx
push edi
call fcn.0040d5f0
mov edx, dword [esi + 0x14]
add esp, 0xc
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
lea ecx, [edi + eax]
cmp ecx, edx
jae 0x40fef2
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40fec0
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x40ff00
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + ebx*2]
mov dword [esi + 0x10], eax
mov dword [esi + 0x28], eax
mov dword [esi + 0x20], ecx
cmp eax, ecx
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 0x14]
jae 0x40ff6e
mov eax, dword [esi + 0x28]
mov dword [esi + 0x10], eax
cmp dword [esi + 0x18], 0
jle 0x40ff6e
mov eax, dword [esi + 0x28]
mov dword [esi + 0x10], eax
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40ff6e
lea eax, [esi + 8]
push eax
push ebx
push edi
call fcn.0040d5f0
add esp, 0xc
movzx ecx, word [esi + 8]
mov edx, dword [esi + 0x10]
mov word [edx], cx
add edx, 2
mov dword [esi + 0x10], edx
cmp edx, dword [esi + 0x20]
jae 0x40ff6e
add edi, eax
cmp edi, ebx
jb 0x40ff40
mov eax, dword [esi + 0x10]
mov word [eax], 0
mov edx, dword [esi + 0x150]
mov word [edx], 0x4db9
mov byte [edx + 2], 0xd6
mov word [edx + 3], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 4
ja 0x40ffca
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xa6fa8ec0
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xec
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 5
jb 0x40ffa0
push edx
push dword [ebp + 8]
call fcn.004032a0
add esp, 8
xor ecx, ecx
mov dword [esi + 0x18], eax
test eax, eax
setne cl
mov dword [esi + 0x20], 0
xor edi, edi
jmp dword [ecx*4 + 0x44763c]
mov ebx, edi
mov edi, dword [esi + 0x6c]
mov ecx, edi
push 2
call fcn.00409e70
push dword [esi + 0x20]
mov dword [esi + 0x1c], ebx
push ebx
push dword [esi + 0x28]
push dword [esi + 0x24]
push edi
call fcn.00413ff0
add esp, 0x14
mov ecx, edi
call fcn.0040a760
movzx eax, al
mov ecx, dword [esi + 0x80]
jmp dword [eax*4 + 0x44765c]
push dword [esi + 0x18]
call fcn.004034b0
add esp, 4
mov ebx, eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov edi, 0xffffffff
add eax, 4
jb 0x41007d
mov edi, eax
test dl, dl
jne 0x410083
mov ecx, edi
push ecx
call fcn.00409660
add esp, 4
mov edi, eax
mov dword [eax], ebx
add edi, 4
xor eax, eax
test ebx, ebx
sete al
mov dword [esi + 0x1c], edi
jmp dword [eax*4 + 0x447644]
lea eax, [ebx + ebx*2]
lea eax, [edi + eax*4]
mov dword [edi], 0
mov dword [edi + 4], 0
mov byte [edi + 8], 0
lea ecx, [edi + 0xc]
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x44764c]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov byte [ecx + 8], 0
add ecx, 0xc
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x44764c]
mov ecx, ebx
xor ebx, ebx
xor eax, eax
mov dword [esi + 0x20], ecx
cmp ebx, ecx
setb al
jmp dword [eax*4 + 0x447654]
mov edx, dword [esi + 0xc0]
mov word [edx], 0xd80
mov eax, dword [esi + 0x104]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x4110ea
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x5de31ca5
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x55
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x4110c0
push 2
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44751c]
mov edx, dword [esi + 0x148]
mov word [edx], 0x1aa
mov dword [edx + 2], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 5
ja 0x41115a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xcee5b8f7
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 7
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 6
jb 0x411130
push 3
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447524]
mov edx, dword [esi + 0x64]
jmp dword [0x44752c]
mov word [edx], 0x1e62
mov byte [edx + 2], 0x8e
mov eax, dword [esi + 0xa0]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x4111da
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x9175a9da
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xae
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x4111b0
push 3
push edx
push ebx
call fcn.00403450
mov edx, dword [esi + 0x64]
add esp, 0xc
jmp case.0x41116d.2
push 3
push edx
push ebx
call fcn.00403450
mov edx, dword [esi + 0x64]
add esp, 0xc
jmp dword [0x447534]
mov word [edx], 0x1e62
mov byte [edx + 2], 0x8e
mov eax, dword [esi + 0xa0]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x4111f0
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0x9175a9da
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xae
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x411230
jmp 0x4111f0
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x44753c]
mov word [edx], 0x8415
mov eax, dword [esi + 0xa4]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x41154a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xcb6ff71c
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x67
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x411520
push 2
push edx
push ebx
call fcn.00403450
mov edx, dword [esi + 0x68]
add esp, 0xc
jmp dword [0x447508]
mov word [edx], 0x8415
mov eax, dword [esi + 0xa4]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 6
ja 0x4115ba
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xcb6ff71c
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x67
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 7
jb 0x411590
push 2
push edx
push ebx
call fcn.00403450
mov edx, dword [esi + 0x68]
add esp, 0xc
jmp case.0x40e510.53
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44750c]
mov edx, dword [esi + 0xc8]
mov word [edx], 0xbe28
mov eax, dword [esi + 0x108]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x41163a
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xe45a7d81
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xc4
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x411610
push 5
push edx
push ebx
call fcn.00403450
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447514]
jmp case.0x40f7f6.1
jmp dword [0x4475c4]
push dword [esi + 0x18]
call fcn.00409670
add esp, 4
mov ebx, dword [esi + 0x3c]
mov ecx, ebx
push 0x400
call fcn.0043d700
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4475cc]
mov edx, dword [esi + 0x78]
mov word [edx], 0x2537
mov byte [edx + 2], 0xab
mov eax, dword [esi + 0x9c]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
ja 0x4119ba
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xef68d534
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x63
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x411990
push edx
push ebx
call fcn.00403230
add esp, 8
xor eax, eax
mov edx, dword [esi + 0x20]
nop
nop
nop
nop
nop
nop
nop
cmp byte [edx + eax], 0
lea eax, [eax + 1]
jne 0x4119d0
fnstcw word [esi + 0x52]
movzx ecx, word [esi + 0x52]
or ecx, 0xc00
mov word [esi + 0x96], cx
fldcw word [esi + 0x96]
fistp dword [esi + 0x16c]
fldcw word [esi + 0x52]
mov ecx, dword [esi + 0x16c]
mov dword [esi + 0x38], ecx
lea ecx, [edx + eax]
dec ecx
mov eax, ecx
xor eax, edx
and ecx, dword [esi + 0x24]
add ecx, ecx
sub ecx, eax
mov eax, ecx
and eax, 1
mov dword [esi + 0x14], ecx
xor ecx, 1
lea edi, [ecx + eax*2]
lea eax, [edi + edi]
test edi, edi
jns 0x411a2e
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov dword [esi + 0x18], eax
lea edx, [eax + edi*2]
cmp dword [esi + 0x20], 0
mov ecx, dword [esi + 0x14]
jne 0x411a5b
mov eax, 0xffffffff
nop
nop
nop
nop
nop
lea ecx, [eax + 1]
cmp byte [eax + 1], 0
mov eax, ecx
jne 0x411a50
mov dword [esi + 8], 0
add edx, 0xfffffffe
mov eax, dword [esi + 0x18]
mov edi, eax
mov dword [esi + 0x1c], edx
cmp eax, edx
mov edx, eax
jae 0x411ac1
mov edx, dword [esi + 0x18]
test ecx, ecx
jle 0x411ac1
mov edi, dword [esi + 0x20]
add ecx, edi
mov edx, dword [esi + 0x18]
mov dword [esi + 0x14], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x411ac1
lea eax, [esi + 8]
push eax
push ecx
push edi
mov dword [esi + 0x10], edx
call fcn.0040d5f0
mov edx, dword [esi + 0x10]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x1c]
jae 0x411ac1
add edi, eax
mov ecx, dword [esi + 0x14]
cmp edi, ecx
jb 0x411a90
mov word [edx], 0
mov ecx, dword [esi + 0x3c]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
push dword [esi + 0x18]
call fcn.0043d4b0
mov edi, dword [esi + 0x2c]
jmp dword [0x4475c0]
mov edx, dword [esi + 0x78]
mov word [edx], 0x2537
mov byte [edx + 2], 0xab
mov eax, dword [esi + 0x9c]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 7
mov edi, dword [esi + 0x20]
ja 0x411b4a
nop
nop
nop
nop
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
movzx ecx, byte [edx + ecx]
add eax, 0xef68d534
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x63
mov ecx, dword [esi + 4]
mov byte [edx + ecx], al
inc dword [esi + 4]
mov eax, dword [esi + 4]
cmp eax, 8
jb 0x411b20
push edx
push ebx
call fcn.00403230
fstp st(0)
add esp, 8
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + eax], 0
lea eax, [eax + 1]
jne 0x411b60
lea ecx, [edi + eax]
dec ecx
mov eax, ecx
xor eax, edi
and ecx, dword [esi + 0x24]
add ecx, ecx
sub ecx, eax
mov eax, ecx
inc eax
mov dword [esi + 0x14], ecx
lea eax, [ecx + ecx + 2]
jns 0x411b89
mov eax, 0xffffffff
push eax
call fcn.00409660
add esp, 4
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x18], eax
lea edx, [eax + ecx*2]
add edx, 2
test edi, edi
jne 0x411bbb
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [eax + 1]
cmp byte [eax + 1], 0
mov eax, ecx
jne 0x411bb0
mov dword [esi + 8], 0
add edx, 0xfffffffe
mov eax, dword [esi + 0x18]
mov edi, eax
mov dword [esi + 0x1c], edx
cmp eax, edx
mov edx, eax
jae 0x411c21
mov edx, dword [esi + 0x18]
test ecx, ecx
jle 0x411c21
mov edi, dword [esi + 0x20]
add ecx, edi
mov edx, dword [esi + 0x18]
mov dword [esi + 0x14], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x411c21
lea eax, [esi + 8]
push eax
push ecx
push edi
mov dword [esi + 0x10], edx
call fcn.0040d5f0
mov edx, dword [esi + 0x10]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x1c]
jae 0x411c21
add edi, eax
mov ecx, dword [esi + 0x14]
cmp edi, ecx
jb 0x411bf0
mov word [edx], 0
mov ecx, dword [esi + 0x3c]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
push dword [esi + 0x18]
call fcn.0043d4b0
jmp case.0x40f2fd.3
mov ecx, dword [case.0x40e510.32]
xor eax, eax
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
jecxz 0x447467
add byte [edx + 0x6d0040e4], ch
in eax, 0x40
add byte [edi], dl
in eax, 0x40
add byte [0x300040e5], bl
in eax, 0x40
add byte [edi], bh
in eax, 0x40
add byte [eax], dh
in eax, 0x40
add byte [ebp - 0x1b], al
inc eax
add byte [edx - 0x1b], dl
inc eax
add ah, dh
in eax, 0x40
add byte [eax], cl
out 0x40, al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add ah, dh
in eax, 0x40
add byte [edx - 0x16], dl
inc eax
add dh, ch
out 0x40, al
add byte [edx - 0x16], dl
inc eax
add byte [esi], al
out 0x40, eax
add byte [edi - 0x16], al
inc eax
add byte [eax + 0x500040e9], bl
ljmp 0x40