Function at 0x412580
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcf0
mov ecx, dword [0x43bbe4]
mov dword [esp + 0xf8], 0x7b370340
mov dword [esp + 0xfc], 0
mov dword [esp + 0xff], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 0xa
ja 0x40ee6b
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x30]
movzx edx, byte [esp + edx + 0xf8]
lea esi, [eax + edx]
add esi, 0xf05b176f
add eax, 0xf05b176f
and eax, edx
add eax, eax
sub esi, eax
mov dword [esp + 0x1f8], esi
mov eax, dword [esp + 0x1f8]
mov edx, eax
or edx, 0xf6
and eax, 0xf6
add eax, edx
inc al
mov edx, dword [esp + 0x30]
mov byte [esp + edx + 0xf8], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 0xb
jb 0x40ee10
mov edx, dword [str.P6Mk0M__world]
mov dword [esp + 0x1f8], 0x7ea69291
mov dword [esp + 0x1fc], 0xae9590a6
mov dword [esp + 0x200], 0xb6858cbe
mov dword [esp + 0x204], 0x8ebdbe89
mov dword [esp + 0x208], 0xb5448487
mov dword [esp + 0x20c], 0x736bb781
mov dword [esp + 0x210], 0x877c4946
mov dword [esp + 0x214], 0x1f53b985
mov dword [esp + 0xa60], 0
mov eax, dword [esp + 0xa60]
cmp eax, 0x1f
ja 0x40ef3c
mov eax, dword [esp + 0xa60]
mov esi, dword [esp + 0xa60]
movzx esi, byte [esp + esi + 0x1f8]
lea edi, [eax - 0x26924278]
add eax, 0x88
and eax, esi
or edi, esi
sub edi, eax
mov dword [esp + 0x30], edi
mov eax, dword [esp + 0x30]
mov esi, eax
or esi, 0x47
and eax, 0x47
add eax, esi
inc al
mov esi, dword [esp + 0xa60]
mov byte [esp + esi + 0x1f8], al
inc dword [esp + 0xa60]
mov eax, dword [esp + 0xa60]
cmp eax, 0x20
jb 0x40eee0
movzx ebx, byte [esp + 0x1f8]
lea eax, [esp + 0xa60]
test bl, bl
je 0x40ef6b
lea esi, [esp + 0x1f9]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40ef60
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40ef8b
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 0x40ef80
mov byte [eax], 0
movzx edx, byte [esp + 0xf8]
test dl, dl
je 0x40efbb
lea esi, [esp + 0xf9]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40efb0
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40efdb
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 0x40efd0
mov byte [eax], 0
lea ecx, [esp + 0xa60]
mov dword [esp + 0x1f8], 0x63f5652b
mov dword [esp + 0x1fc], 0x6ffc61f0
mov dword [esp + 0x200], 0x6bfe6d05
mov dword [esp + 0x204], 0x973b69f6
mov dword [esp + 0x208], 0x931395ea
mov dword [esp + 0x20c], 0x9ffb9102
mov dword [esp + 0x210], 0x9bbc9dd8
mov dword [esp + 0x214], 0x870899f5
mov dword [esp + 0x218], 0x83108516
mov dword [esp + 0x21c], 0x8fed8115
mov dword [esp + 0x220], 0x8b108de1
mov dword [esp + 0x224], 0xb719891d
mov dword [esp + 0x228], 0xb3e5b524
mov dword [esp + 0x22c], 0xbfe3b12a
mov dword [esp + 0x230], 0xbb25bd27
mov dword [esp + 0x234], 0xa7ebb923
mov dword [esp + 0x238], 0xa335a5cc
mov dword [esp + 0x23c], 0xaf33a13c
mov dword [esp + 0x240], 0xab37adfd
mov dword [esp + 0x244], 0xd73ca934
mov dword [esp + 0x248], 0xd346d5bd
mov dword [esp + 0x24c], 0xdf41d1bf
mov dword [esp + 0x250], 0xdbb7ddb2
mov dword [esp + 0x254], 0xc7ebd9b6
mov dword [esp + 0x258], 0xc3c4c5f0
mov byte [esp + 0x260], 0
mov dword [esp + 0x25c], 0
mov dword [esp + 0x30], 0
mov edx, dword [esp + 0x30]
cmp edx, 0x68
ja 0x40f173
nop
nop
nop
nop
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x30]
movzx esi, byte [esp + esi + 0x1f8]
lea edi, [edx + 0xf1]
mov ebx, esi
not ebx
or ebx, edi
and edi, esi
add edi, ebx
neg edi
add edx, edi
add edx, 0xb27ed9f0
mov dword [esp + 0xf8], edx
mov edx, dword [esp + 0xf8]
add dl, 0x69
mov esi, dword [esp + 0x30]
mov byte [esp + esi + 0x1f8], dl
inc dword [esp + 0x30]
mov edx, dword [esp + 0x30]
cmp edx, 0x69
jb 0x40f120
sub eax, ecx
mov dword [esp + 0xf8], 0x8be385d7
mov dword [esp + 0xfc], 0x8fe7891a
mov word [esp + 0x100], 0x8d8e
mov dword [esp + 0x102], 0
mov dword [esp + 0x106], 0
mov dword [esp + 0x10a], 0
mov word [esp + 0x10e], 0
mov dword [esp + 0x9f8], 0
mov edx, dword [esp + 0x9f8]
cmp edx, 0x17
ja 0x40f234
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x9f8]
mov esi, dword [esp + 0x9f8]
movzx esi, byte [esp + esi + 0xf8]
lea edi, [edx + 0x9fdaa95]
add edx, 0x95
and edx, esi
or edi, esi
sub edi, edx
mov dword [esp + 0x30], edi
mov edx, dword [esp + 0x30]
add dl, 0xed
mov esi, dword [esp + 0x9f8]
mov byte [esp + esi + 0xf8], dl
inc dword [esp + 0x9f8]
mov edx, dword [esp + 0x9f8]
cmp edx, 0x18
jb 0x40f1e0
lea edx, [esp + 0xd0]
lea esi, [esp + 0xcc]
lea edi, [esp + 0x1f8]
lea ebx, [esp + 0xf8]
push edx
push esi
push eax
push ecx
push edi
push ebx
push 0x440a58
call fcn.0040c930
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x43c4f8]
xor esi, esi
xor ebx, ebx
test esi, esi
sete bl
jmp dword [ebx*4 + 0x43c500]
push 0x104
push edi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, dword [esp + 0xd0]
mov edi, dword [esp + 0xcc]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [ecx + edi - 1]
cmp edx, 0x3d
je 0x40f2ac
cmp edx, 0x2e
jne 0x40f2ad
dec eax
movzx ecx, byte [ecx + edi - 2]
cmp ecx, 0x3d
je 0x40f2bc
cmp ecx, 0x2e
jne 0x40f2bd
dec eax
push eax
call fcn.00408f60
add esp, 4
mov esi, eax
push eax
push edi
call fcn.00430e90
add esp, 8
push dword [esp + 0xcc]
call fcn.00432970
add esp, 4
xor ebx, ebx
test esi, esi
sete bl
jmp dword [ebx*4 + 0x43c500]
push esi
call fcn.00401fe0
add esp, 4
mov edi, eax
jmp dword [ebx*4 + 0x43c508]
push esi
call fcn.00408f70
add esp, 4
push edi
call fcn.00402900
add esp, 4
mov dword [esp + 0x2c], eax
mov word [esp + 0x1f8], 0x1026
mov byte [esp + 0x1fa], 0xa2
mov dword [esp + 0x1ff], 0
mov dword [esp + 0x1fb], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 0xa
ja 0x40f3a5
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
movzx ecx, byte [esp + ecx + 0x1f8]
lea edx, [eax - 0x3ba1d3a]
lea esi, [eax + 0xc6]
or edx, esi
and edx, ecx
and esi, ecx
add esi, edx
add eax, ecx
add eax, 0xfc45e2c6
sub eax, esi
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xf8]
add al, 0x96
mov ecx, dword [esp + 0x30]
mov byte [esp + ecx + 0x1f8], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 0xb
jb case.default.0x40f3c0
lea esi, [esp + 0x1f8]
push esi
push dword [esp + 0x30]
call fcn.00402980
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43c510]
xor eax, eax
movzx eax, al
jmp dword [eax*4 + 0x43c518]
push edi
call fcn.00402b90
add esp, 4
xor eax, eax
jmp 0x41085c
mov dword [esp + 0x1f8], 0x93505156
mov dword [esp + 0x1fc], 0
mov word [esp + 0x200], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 9
ja 0x40f468
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
movzx ecx, byte [esp + ecx + 0x1f8]
lea edx, [eax + 0x33]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0x3b770f33
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xf8]
add al, 0x9b
mov ecx, dword [esp + 0x30]
mov byte [esp + ecx + 0x1f8], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 0xa
jb 0x40f420
push dword [esp + 0x1f8]
call fcn.00430410
add esp, 4
movzx eax, al
jmp dword [eax*4 + 0x43c518]
mov word [esp + 0x1f8], 0xe9ed
mov byte [esp + 0x1fa], 0x42
mov dword [esp + 0x1fb], 0
mov dword [esp + 0x1ff], 0
mov word [esp + 0x203], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 0xc
ja 0x40f517
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
movzx ecx, byte [esp + ecx + 0x1f8]
lea edx, [eax - 0x6aeb9f8a]
add eax, 0x76
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xf8], edx
mov eax, dword [esp + 0xf8]
add al, 0xc6
mov ecx, dword [esp + 0x30]
mov byte [esp + ecx + 0x1f8], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 0xd
jb 0x40f4d0
push esi
push dword [esp + 0x30]
call fcn.00402980
add esp, 8
mov dword [esp + 0xc4], eax
mov word [esp + 0x1f8], 0xaea3
mov byte [esp + 0x1fa], 0x14
mov dword [esp + 0x1fb], 0
mov dword [esp + 0x1ff], 0
mov dword [esp + 0x203], 0
mov byte [esp + 0x207], 0
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
cmp eax, 0xf
ja 0x40f5cc
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
movzx ecx, byte [esp + ecx + 0x1f8]
lea edx, [eax + ecx]
add edx, 0xe906af7d
add eax, 0xe906af7d
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xf8], edx
mov eax, dword [esp + 0xf8]
add al, 0x95
mov ecx, dword [esp + 0x30]
mov byte [esp + ecx + 0x1f8], al
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40f580
push esi
mov esi, dword [esp + 0x30]
push esi
call fcn.00402980
add esp, 8
xor ebx, ebx
test eax, eax
setg bl
push esi
call fcn.00410870
add esp, 4
push edi
call fcn.00402b90
add esp, 4
lea edi, [esp + 0x9f8]
mov ecx, edi
push 1
call fcn.00409740
push edi
call fcn.0041c650
add esp, 4
mov ecx, edi
call fcn.0040a0c0
lea edi, [esp + 0xc80]
mov ecx, edi
push 3
call fcn.00409740
push edi
call fcn.0041ce10
add esp, 4
mov ecx, edi
call fcn.0040a0c0
lea edi, [esp + 0xc18]
mov ecx, edi
push 1
call fcn.00409740
push edi
call fcn.0041d090
add esp, 4
mov ecx, edi
call fcn.0040a0c0
lea edi, [esp + 0xbb0]
mov ecx, edi
push 1
call fcn.00409740
push edi
call fcn.0041f0c0
add esp, 4
push edi
call fcn.0041fa60
add esp, 4
push edi
call fcn.0041fef0
add esp, 4
mov ecx, edi
call fcn.0040a0c0
lea edi, [esp + 0xb48]
mov ecx, edi
push 1
call fcn.00409740
push edi
call fcn.00421f50
add esp, 4
mov ecx, edi
call fcn.0040a0c0
lea edi, [esp + 0xae0]
mov ecx, edi
push 1
call fcn.00409740
push edi
call fcn.00423f30
add esp, 4
push edi
call fcn.0042b300
add esp, 4
jmp dword [ebx*4 + 0x43c520]
jmp dword [0x43c52c]
push edi
call fcn.0042b4d0
add esp, 4
jmp dword [0x43c52c]
lea ecx, [esp + 0xae0]
call fcn.0040a0c0
lea eax, [esp + 0xd7]
push eax
call fcn.004307d0
add esp, 4
mov dword [esp + 0x30], 0xe2d5e1a6
mov word [esp + 0x34], 0x90e8
mov byte [esp + 0x36], 0x56
mov dword [esp + 0x37], 0
mov dword [esp + 0x3b], 0
mov byte [esp + 0x3f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x40f793
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x30]
lea esi, [eax + 0xb9cf9b4]
lea ecx, [eax + edx]
add ecx, 0xb9cf9b4
and esi, edx
add eax, 0xb4
and eax, edx
add eax, esi
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x1f8]
add al, 0x14
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x40f740
mov eax, dword [0x43bbe4]
mov dword [esp], 0x63a7f34c
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xb], 0
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x18]
cmp ecx, 0xe
ja 0x40f815
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
movzx edx, byte [esp + edx]
lea esi, [ecx - 0x2d5391cf]
and esi, edx
add ecx, edx
add ecx, 0xd2ac6e31
add esi, esi
sub ecx, esi
mov dword [esp + 0x1f8], ecx
mov ecx, dword [esp + 0x1f8]
add cl, 0xa9
mov edx, dword [esp + 0x18]
mov byte [esp + edx], cl
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
cmp ecx, 0xf
jb 0x40f7d0
mov edx, dword [str.P6Mk0M__world]
mov dword [esp + 0x1f8], 0x80786869
mov dword [esp + 0x1fc], 0x6e7c6a6b
mov dword [esp + 0x200], 0x7671667d
mov dword [esp + 0x204], 0xbd636065
mov dword [esp + 0x208], 0x906a7e6c
mov dword [esp + 0x20c], 0xb5a0a3ae
mov dword [esp + 0x210], 0x98706a6a
mov byte [esp + 0x214], 0xda
mov dword [esp + 0x215], 0
mov word [esp + 0x219], 0
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x14]
cmp ecx, 0x22
ja 0x40f8f2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x14]
movzx esi, byte [esp + esi + 0x1f8]
lea edi, [ecx + esi]
add edi, 0x13864261
add ecx, 0x13864261
and ecx, esi
add ecx, ecx
sub edi, ecx
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x18]
mov esi, ecx
xor esi, 0x58
and ecx, 0x58
lea ecx, [esi + ecx*2]
inc cl
mov esi, dword [esp + 0x14]
mov byte [esp + esi + 0x1f8], cl
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
cmp ecx, 0x23
jb 0x40f8a0
movzx ebx, byte [esp + 0x1f8]
lea ecx, [esp + 0xf8]
test bl, bl
je 0x40f91b
lea esi, [esp + 0x1f9]
nop
nop
nop
nop
mov byte [ecx], bl
inc ecx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40f910
mov byte [ecx], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40f93b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ecx], bl
inc ecx
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40f930
mov byte [ecx], 0
movzx edx, byte [esp]
test dl, dl
je 0x40f95b
lea esi, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [ecx], dl
inc ecx
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40f950
mov byte [ecx], 0
movzx edx, byte [eax]
test dl, dl
je 0x40f97b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ecx], dl
inc ecx
movzx edx, byte [eax]
inc eax
test dl, dl
jne 0x40f970
mov byte [ecx], 0
movzx eax, byte [esp + 0x30]
test al, al
je 0x40f99b
lea edx, [esp + 0x31]
nop
nop
nop
nop
nop
mov byte [ecx], al
inc ecx
movzx eax, byte [edx]
inc edx
test al, al
jne 0x40f990
mov byte [ecx], 0
movzx eax, byte [esp + 0xd7]
test al, al
je 0x40f9cb
lea edx, [esp + 0xd8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ecx], al
inc ecx
movzx eax, byte [edx]
inc edx
test al, al
jne 0x40f9c0
mov byte [ecx], 0
lea eax, [esp + 0xf8]
mov edx, eax
not edx
mov esi, ecx
not esi
and esi, eax
and edx, ecx
mov dword [esp + 0xbc], edx
mov dword [esp + 0x1f8], 0xeb2595d3
mov dword [esp + 0x1fc], 0xef5ce958
mov dword [esp + 0x200], 0xe35eed55
mov dword [esp + 0x204], 0xe793e156
mov dword [esp + 0x208], 0xfb6be5b2
mov dword [esp + 0x20c], 0xff43f94a
mov dword [esp + 0x210], 0xf39cfdb0
mov dword [esp + 0x214], 0xf740f155
mov dword [esp + 0x218], 0xcb48f546
mov dword [esp + 0x21c], 0xcf6dc975
mov dword [esp + 0x220], 0xc378cd69
mov dword [esp + 0x224], 0xc771c17d
mov dword [esp + 0x228], 0xdbb5c574
mov dword [esp + 0x22c], 0xdfabd952
mov dword [esp + 0x230], 0xd355dd57
mov dword [esp + 0x234], 0xd7a3d15b
mov dword [esp + 0x238], 0x2b65d56c
mov dword [esp + 0x23c], 0x2f9b299c
mov dword [esp + 0x240], 0x23a72d5d
mov dword [esp + 0x244], 0x279c2194
mov dword [esp + 0x248], 0x3b96259d
mov dword [esp + 0x24c], 0x3f89399f
mov dword [esp + 0x250], 0x33873d9a
mov dword [esp + 0x254], 0x37233196
mov dword [esp + 0x258], 0xb343528
mov dword [esp + 0x25f], 0
mov dword [esp + 0x25c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x6a
ja 0x40fb88
mov ecx, dword [esp]
mov edi, dword [esp]
movzx edi, byte [esp + edi + 0x1f8]
lea ebx, [ecx + 0xbd]
and ebx, edi
mov eax, 0x65067f42
sub eax, ecx
or eax, edi
lea edx, [ecx + eax]
add edx, 0x9af980be
mov eax, edx
and eax, ebx
xor ebx, edx
add ecx, edi
lea eax, [ebx + eax*2]
sub ecx, eax
add ecx, 0x9af980bd
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x30]
add al, 0xd5
mov ecx, dword [esp]
mov byte [esp + ecx + 0x1f8], al
mov eax, dword [esp]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp], eax
mov eax, dword [esp]
cmp eax, 0x6b
jb 0x40fb20
mov ebx, dword [esp + 0xbc]
sub ebx, esi
mov dword [esp + 0x30], 0x6383614f
mov dword [esp + 0x34], 0x678f65f4
mov word [esp + 0x38], 0x6968
mov dword [esp + 0x3e], 0
mov dword [esp + 0x3a], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 0x11
ja 0x40fc2d
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
movzx esi, byte [esp + eax + 0x30]
lea edi, [ecx - 0xd9fdad0]
mov eax, esi
not eax
or eax, edi
add eax, esi
inc eax
and edi, esi
mov edx, eax
and edx, edi
xor edi, eax
lea eax, [ecx + esi]
add eax, 0xf2602530
lea ecx, [edi + edx*2]
sub eax, ecx
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
or eax, 0xaf
and ecx, 0xaf
add ecx, eax
inc cl
mov eax, dword [esp + 0x18]
mov byte [esp + eax + 0x30], cl
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 0x12
jb 0x40fbd0
lea eax, [esp + 0xc8]
lea ecx, [esp + 0xc0]
lea edx, [esp + 0x1f8]
lea esi, [esp + 0x30]
push eax
push ecx
push ebx
lea eax, [esp + 0x104]
push eax
push edx
push esi
push 0x440a58
call fcn.0040c930
add esp, 0x1c
jmp case.0x40f6c7.3
lea ecx, [esp + 0xc8]
lea edx, [esp + 0xc0]
lea ebx, [esp + 0x30]
push ecx
push edx
push eax
lea eax, [esp + 0x104]
push eax
lea edi, [esp + 0x208]
push edi
push ebx
push 0x440a58
call fcn.0040c930
add esp, 0x1c
jmp dword [0x43c534]
lea ecx, [esp + 0xae0]
call fcn.0040a0c0
lea eax, [esp + 0xd7]
push eax
call fcn.004307d0
add esp, 4
mov dword [esp + 0x30], 0xe2d5e1a6
mov word [esp + 0x34], 0x90e8
mov byte [esp + 0x36], 0x56
mov dword [esp + 0x37], 0
mov dword [esp + 0x3b], 0
mov byte [esp + 0x3f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x40fd53
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x30]
lea esi, [eax + 0xb9cf9b4]
lea ecx, [eax + edx]
add ecx, 0xb9cf9b4
and esi, edx
add eax, 0xb4
and eax, edx
add eax, esi
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x1f8]
add al, 0x14
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x40fd00
mov ecx, dword [0x43bbe4]
mov dword [esp], 0x63a7f34c
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xb], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 0xe
ja 0x40fdd3
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
movzx edx, byte [esp + edx]
lea esi, [eax - 0x2d5391cf]
and esi, edx
add eax, edx
add eax, 0xd2ac6e31
add esi, esi
sub eax, esi
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x1f8]
add al, 0xa9
mov edx, dword [esp + 0x18]
mov byte [esp + edx], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 0xf
jb 0x40fd90
mov edx, dword [str.P6Mk0M__world]
mov dword [esp + 0x1f8], 0x80786869
mov dword [esp + 0x1fc], 0x6e7c6a6b
mov dword [esp + 0x200], 0x7671667d
mov dword [esp + 0x204], 0xbd636065
mov dword [esp + 0x208], 0x906a7e6c
mov dword [esp + 0x20c], 0xb5a0a3ae
mov dword [esp + 0x210], 0x98706a6a
mov byte [esp + 0x214], 0xda
mov dword [esp + 0x215], 0
mov word [esp + 0x219], 0
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x14]
cmp eax, 0x22
ja 0x40feb1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x14]
movzx esi, byte [esp + esi + 0x1f8]
lea edi, [eax + esi]
add edi, 0x13864261
add eax, 0x13864261
and eax, esi
add eax, eax
sub edi, eax
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x18]
mov esi, eax
xor esi, 0x58
and eax, 0x58
lea eax, [esi + eax*2]
inc al
mov esi, dword [esp + 0x14]
mov byte [esp + esi + 0x1f8], al
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, 0x23
jb 0x40fe60
movzx ebx, byte [esp + 0x1f8]
lea eax, [esp + 0xf8]
test bl, bl
je 0x40feeb
lea esi, [esp + 0x1f9]
lea eax, [esp + 0xf8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40fee0
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40ff0b
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 0x40ff00
mov byte [eax], 0
movzx edx, byte [esp]
test dl, dl
je 0x40ff2b
lea esi, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40ff20
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40ff4b
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 0x40ff40
mov byte [eax], 0
movzx ecx, byte [esp + 0x30]
test cl, cl
je 0x40ff6b
lea edx, [esp + 0x31]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40ff60
mov byte [eax], 0
movzx ecx, byte [esp + 0xd7]
test cl, cl
je 0x40ff9b
lea edx, [esp + 0xd8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40ff90
mov byte [eax], 0
mov dword [esp + 0x1f8], 0xeb2595d3
mov dword [esp + 0x1fc], 0xef5ce958
mov dword [esp + 0x200], 0xe35eed55
mov dword [esp + 0x204], 0xe793e156
mov dword [esp + 0x208], 0xfb6be5b2
mov dword [esp + 0x20c], 0xff43f94a
mov dword [esp + 0x210], 0xf39cfdb0
mov dword [esp + 0x214], 0xf740f155
mov dword [esp + 0x218], 0xcb48f546
mov dword [esp + 0x21c], 0xcf6dc975
mov dword [esp + 0x220], 0xc378cd69
mov dword [esp + 0x224], 0xc771c17d
mov dword [esp + 0x228], 0xdbb5c574
mov dword [esp + 0x22c], 0xdfabd952
mov dword [esp + 0x230], 0xd355dd57
mov dword [esp + 0x234], 0xd7a3d15b
mov dword [esp + 0x238], 0x2b65d56c
mov dword [esp + 0x23c], 0x2f9b299c
mov dword [esp + 0x240], 0x23a72d5d
mov dword [esp + 0x244], 0x279c2194
mov dword [esp + 0x248], 0x3b96259d
mov dword [esp + 0x24c], 0x3f89399f
mov dword [esp + 0x250], 0x33873d9a
mov dword [esp + 0x254], 0x37233196
mov dword [esp + 0x258], 0xb343528
mov dword [esp + 0x25f], 0
mov dword [esp + 0x25c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x6a
ja 0x410148
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x1f8]
lea esi, [ecx + 0xbd]
and esi, edx
mov edi, 0x65067f42
sub edi, ecx
or edi, edx
add edi, ecx
add edi, 0x9af980be
mov ebx, edi
and ebx, esi
xor esi, edi
add ecx, edx
lea edx, [esi + ebx*2]
sub ecx, edx
add ecx, 0x9af980bd
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
add cl, 0xd5
mov edx, dword [esp]
mov byte [esp + edx + 0x1f8], cl
mov ecx, dword [esp]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp], ecx
mov ecx, dword [esp]
cmp ecx, 0x6b
jb 0x4100e0
lea ecx, [esp + 0xf8]
sub eax, ecx
mov dword [esp + 0x30], 0x6383614f
mov dword [esp + 0x34], 0x678f65f4
mov word [esp + 0x38], 0x6968
mov dword [esp + 0x3e], 0
mov dword [esp + 0x3a], 0
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x18]
cmp edx, 0x11
ja 0x40fc70
nop
nop
nop
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x18]
movzx esi, byte [esp + esi + 0x30]
lea edi, [edx - 0xd9fdad0]
mov ebx, esi
not ebx
or ebx, edi
lea ecx, [esi + ebx]
inc ecx
and edi, esi
mov ebx, ecx
and ebx, edi
xor edi, ecx
lea ecx, [edx + esi]
add ecx, 0xf2602530
lea edx, [edi + ebx*2]
sub ecx, edx
mov dword [esp], ecx
mov edx, dword [esp]
mov ecx, edx
or ecx, 0xaf
and edx, 0xaf
add edx, ecx
inc dl
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0x30], dl
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
cmp ecx, 0x12
jb 0x410190
jmp 0x40fc70
movzx eax, al
jmp dword [eax*4 + 0x43c538]
xor esi, esi
jmp 0x410268
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0xc0]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [ecx + esi - 1]
cmp edx, 0x3d
je 0x410226
cmp edx, 0x2e
jne 0x410227
dec eax
movzx ecx, byte [ecx + esi - 2]
cmp ecx, 0x3d
mov dword [esp + 0xbc], esi
je 0x41023d
cmp ecx, 0x2e
jne 0x41023e
dec eax
push eax
call fcn.00408f60
add esp, 4
mov esi, eax
push eax
push dword [esp + 0xc0]
call fcn.00430e90
add esp, 8
push dword [esp + 0xc0]
call fcn.00432970
add esp, 4
mov eax, dword [case.0x40f6c7.10]
nop
nop
nop
jmp eax
xor eax, eax
test esi, esi
setne al
jmp dword [eax*4 + 0x43c550]
push esi
call fcn.00401fe0
add esp, 4
xor ecx, ecx
test esi, esi
sete cl
jmp dword [ecx*4 + 0x43c558]
push esi
mov esi, eax
call fcn.00408f70
mov eax, esi
add esp, 4
push eax
mov esi, eax
call fcn.00412c10
add esp, 4
push esi
call fcn.00402b90
add esp, 4
mov dword [esp + 0x1f8], 0xf3592b28
mov dword [esp + 0x200], 0
mov dword [esp + 0x1fc], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41033b
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x1f8]
lea edx, [eax + 0x3e]
and edx, ecx
mov esi, 0xcb6940c1
sub esi, eax
or esi, ecx
not esi
add esi, ecx
sub esi, edx
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x30]
mov ecx, eax
or ecx, 0x4d
and eax, 0x4d
add eax, ecx
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x1f8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x4102f0
push edi
push dword [esp + 0x30]
call fcn.00402980
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43c560]
xor eax, eax
cmp dword [esp + 0xc4], 0
setg al
jmp dword [eax*4 + 0x43c568]
lea ecx, [esp + 0x1f8]
push 1
call fcn.00409740
mov eax, 0xffffffff
nop
nop
nop
cmp byte [eax + 0x440d61], 0
lea eax, [eax + 1]
jne 0x410380
mov dword [esp + 0x30], 0x786a6e8a
mov dword [esp + 0x34], 0x777cb36b
mov word [esp + 0x38], 0xcd72
mov dword [esp + 0x3a], 0
mov dword [esp + 0x3e], 0
mov dword [esp + 0x42], 0
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x18]
cmp ecx, 0x15
ja 0x41040a
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
movzx edx, byte [esp + edx + 0x30]
lea esi, [ecx + 0x375e8761]
add ecx, 0x61
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp], esi
mov ecx, dword [esp]
add cl, 0x59
mov edx, dword [esp + 0x18]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
cmp ecx, 0x16
jb 0x4103d0
lea esi, [esp + 0x1f8]
mov ecx, esi
push eax
push 0x440d60
push ebx
call fcn.00409950
mov ecx, esi
call fcn.0040a0c0
mov ecx, esi
call fcn.00409780
xor eax, eax
cmp dword [esp + 0xc4], 0
setg al
jmp dword [eax*4 + 0x43c568]
push 0
call fcn.00435b30
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c570]
mov dword [esp + 0x30], 0xd347d17b
mov dword [esp + 0x34], 0xdf8add7e
mov dword [esp + 0x38], 0xdb40d971
mov dword [esp + 0x3c], 0xc7a4c575
mov dword [esp + 0x40], 0xc35dc1a4
mov dword [esp + 0x44], 0xcf6fcd5e
mov dword [esp + 0x48], 0xcb54c95c
mov dword [esp + 0x4c], 0x376535aa
mov dword [esp + 0x50], 0x339b31a1
mov dword [esp + 0x54], 0x3f5c3da4
mov dword [esp + 0x58], 0x3baf3993
mov dword [esp + 0x5c], 0x27722596
mov dword [esp + 0x60], 0x23b82189
mov dword [esp + 0x64], 0x2f4c2d8d
mov dword [esp + 0x68], 0x2b79294c
mov dword [esp + 0x6c], 0x17741587
mov dword [esp + 0x70], 0x13bb118a
mov dword [esp + 0x74], 0x1fb31d85
mov dword [esp + 0x78], 0x1b87198f
mov dword [esp + 0x7c], 0x7640586
mov dword [esp + 0x80], 0x39c0157
mov dword [esp + 0x84], 0xf510d62
mov dword [esp + 0x88], 0xb59096e
mov dword [esp + 0x8c], 0x77e5759c
mov dword [esp + 0x90], 0x73e271d4
mov dword [esp + 0x94], 0x7fdf7ddd
mov dword [esp + 0x98], 0x7b1879eb
mov dword [esp + 0x9c], 0x67046514
mov dword [esp + 0xa0], 0x63cf61ca
mov dword [esp + 0xa4], 0x6f0c6df6
mov dword [esp + 0xa8], 0x6b68690c
mov word [esp + 0xb0], 0
mov dword [esp + 0xac], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x81
ja 0x410603
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x30]
lea esi, [ecx + 0x308293e3]
lea ebx, [ecx + 0xe3]
mov edi, esi
and edi, ebx
and edi, edx
xor esi, ebx
and esi, edx
add ecx, edx
add ecx, 0x308293e3
lea edx, [esi + edi*2]
sub ecx, edx
mov dword [esp + 0x1f8], ecx
mov ecx, dword [esp + 0x1f8]
mov edx, ecx
or edx, 0xca
and ecx, 0xca
add ecx, edx
inc cl
mov edx, dword [esp]
mov byte [esp + edx + 0x30], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x82
jb 0x4105a0
movzx ecx, word [esp + 0x30]
test cx, cx
lea esi, [esp + 0x1f8]
je 0x410631
lea esi, [esp + 0x1f8]
lea edx, [esp + 0x32]
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x410620
mov word [esi], 0
movzx ecx, word [eax]
test cx, cx
lea edi, [esp + 0x30]
je 0x410661
add eax, 2
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 0x410650
mov dword [esi], 0x220022
mov dword [esi + 4], 0x22
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 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], 0x44
mov dword [esp + 0x5c], 1
push 0xd3a7a30
push dword [0x441d60]
call fcn.00435d20
add esp, 8
lea ecx, [esp + 0x18]
lea edx, [esp + 0x1f8]
push ecx
push edi
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 + 0x43c578]
mov eax, dword [esp + 0x18]
mov dword [esp], 0xb2b5b4b7
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x28], 0
mov ecx, dword [esp + 0x28]
cmp ecx, 0xb
ja 0x4107bf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x28]
movzx edx, byte [esp + edx]
mov esi, ecx
and esi, 0x365bceb9
xor ecx, 0x365bceb9
lea ecx, [ecx + esi*2]
lea esi, [ecx + edx]
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
add cl, 0xf1
mov edx, dword [esp + 0x28]
mov byte [esp + edx], cl
inc dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
cmp ecx, 0xc
jb 0x410770
mov ecx, dword [0x441d6c]
test ecx, ecx
je case.0x41043a.4
mov edx, dword [esp]
xor esi, esi
mov edi, dword [0x441d70]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x11081610
je 0x4107f0
inc esi
cmp ecx, esi
jne 0x4107e0
jmp case.0x41043a.4
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je case.0x41043a.4
push eax
push 1
push dword [0x441d74]
push ecx
call fcn.00434400
add esp, 0x10
mov eax, dword [case.0x41043a.0]
nop
jmp eax
lea ecx, [esp + 0xae0]
call fcn.00409780
lea ecx, [esp + 0xb48]
call fcn.00409780
lea ecx, [esp + 0xbb0]
call fcn.00409780
lea ecx, [esp + 0xc18]
call fcn.00409780
lea ecx, [esp + 0xc80]
call fcn.00409780
lea ecx, [esp + 0x9f8]
call fcn.00409780
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x34], esi
jmp 0x410931
inc edi
push esi
call fcn.00402b50
add esp, 4
xor ecx, ecx
cmp edi, eax
setb cl
mov al, 1
jmp dword [ecx*4 + 0x43c598]
push edi
push esi
call fcn.00402b60
add esp, 8
mov dword [esp + 4], eax
mov word [esp + 0x40], 0x2d98
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov byte [esp + 0x4e], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xe
ja 0x4109e0
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx edx, byte [esp + ecx + 0x40]
lea ecx, [eax + edx]
add ecx, 0x7c438306
add eax, 0x7c438306
and eax, edx
add eax, eax
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd0]
add al, 0xd6
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xf
jb 0x410990
push 3
push ebx
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43c5a0]
mov word [esp + 0x40], 0x9502
mov dword [esp + 0x42], 0
mov word [esp + 0x46], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 7
ja 0x410a81
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x6eefa9ed]
add eax, 0xed
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
mov ecx, eax
xor ecx, 0x84
and eax, 4
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 8
jb 0x410a30
push ebx
push dword [esp + 8]
call fcn.004028b0
add esp, 8
fnstcw word [esp + 0xb2]
movzx eax, word [esp + 0xb2]
or eax, 0xc00
mov word [esp + 0xce], ax
fldcw word [esp + 0xce]
fistp dword [esp + 0x140]
fldcw word [esp + 0xb2]
mov eax, dword [esp + 0x140]
xor ecx, ecx
test eax, eax
setle cl
mov dword [esp + 0x38], edi
jmp dword [ecx*4 + 0x43c5a8]
xor ecx, ecx
cmp eax, 2
setl cl
jmp dword [ecx*4 + 0x43c5b0]
sete al
movzx eax, al
jmp dword [eax*4 + 0x43c5b8]
mov word [esp + 0x40], 0x61f0
mov dword [esp + 0x42], 0
mov dword [esp + 0x45], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 8
ja 0x410b63
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x3f4bb2f0]
add eax, 0xf0
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 0x70
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 9
jb 0x410b20
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
mov dword [esp + 0x1c], eax
mov word [esp + 0x40], 0xd922
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov byte [esp + 0x4a], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xa
ja 0x410bfb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax - 0x769d44e4]
add eax, 0x1c
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
mov ecx, eax
or ecx, 0x3b
and eax, 0x3b
add eax, ecx
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xb
jb 0x410bb0
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
xor ecx, ecx
cmp dword [esp + 0x1c], 0
sete cl
jmp dword [ecx*4 + 0x43c6d8]
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43c6e0]
mov dword [esp + 0x28], eax
not eax
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x1c]
mov eax, ecx
jmp dword [0x43c6e8]
mov esi, ecx
jmp 0x412790
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43c5c0]
mov word [esp + 0x40], 0xb120
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov word [esp + 0x4a], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xb
ja 0x410ce0
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x48]
and edx, ecx
mov esi, 0x74194db7
sub esi, eax
or esi, ecx
not esi
add esi, ecx
sub esi, edx
mov dword [esp + 0xd0], esi
mov eax, dword [esp + 0xd0]
mov ecx, eax
or ecx, 7
and eax, 7
add eax, ecx
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xc
jb 0x410c90
push 2
push ebx
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
mov bl, 1
mov esi, dword [esp + 0x34]
jmp dword [ecx*4 + 0x43c5c8]
mov word [esp + 0xd0], 0x35c5
mov dword [esp + 0xd2], 0
mov dword [esp + 0xd5], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 8
ja 0x410d8e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0xd0]
lea edx, [eax + ecx]
add edx, 0xc8fc0279
add eax, 0x79
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xb1
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0xd0], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 9
jb 0x410d40
push 5
lea eax, [esp + 0xd4]
push eax
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c5d0]
jmp dword [0x43c5d8]
mov word [esp + 8], 0x59c2
mov dword [esp + 0xa], 0
mov dword [esp + 0xe], 0
mov dword [esp + 0x11], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 0xc
ja 0x410e3f
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
and edx, 0xdb09638c
xor eax, 0x5b09638c
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
mov ecx, edx
not ecx
and ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x2c
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 8], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 0xd
jb 0x410df0
push 2
lea eax, [esp + 0xc]
push eax
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
jmp case.0x410dab.2
push 2
lea eax, [esp + 0xc]
push eax
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
jmp dword [0x43c5e4]
mov word [esp + 8], 0x59c2
mov dword [esp + 0xa], 0
mov dword [esp + 0xe], 0
mov dword [esp + 0x11], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 0xc
ja 0x410e60
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
and edx, 0xdb09638c
xor eax, 0x5b09638c
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
mov ecx, edx
not ecx
and ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x2c
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 8], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 0xd
jb 0x410eb0
jmp 0x410e60
mov word [esp + 0x40], 0x8576
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov word [esp + 0x4a], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xb
ja 0x410f8c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax - 0x425f35bf]
add eax, 0x41
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
mov ecx, eax
xor ecx, 0x38
and eax, 0x38
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xc
jb 0x410f40
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
mov dword [esp + 0x20], eax
mov word [esp + 0x40], 0xa558
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov dword [esp + 0x49], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xc
ja 0x411025
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x400c1565]
mov esi, ecx
not esi
or esi, edx
add esi, ecx
inc esi
and edx, ecx
mov edi, esi
and edi, edx
xor edx, esi
add eax, ecx
add eax, 0x400c1565
lea ecx, [edx + edi*2]
sub eax, ecx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd0]
add al, 0x3d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xd
jb 0x410fd0
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
xor ecx, ecx
mov edx, dword [esp + 0x20]
test edx, edx
sete cl
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
jmp dword [ecx*4 + 0x43c638]
mov dword [esp + 4], eax
mov ecx, eax
mov eax, dword [case.0x411045.4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp dword [esp + 4], 0
sete al
jmp dword [eax*4 + 0x43c650]
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
inc eax
cmp byte [esi], 0
jne 0x411080
mov eax, esi
sub eax, edx
xor ebx, ebx
test eax, eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
jle 0x4110d7
cmp byte [edx], 0
je 0x4110d7
xor ebx, ebx
mov edi, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040ec20
add esp, 0xc
lea ecx, [edi + eax]
inc ebx
cmp ecx, esi
jae 0x4110d7
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x4110b0
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x4110e5
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x40], 0
lea ecx, [eax + ebx*2]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
cmp ecx, eax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
jbe 0x41179d
mov ebx, dword [esp + 0x1c]
cmp dword [esp + 0x30], 0
jle 0x41179d
mov ebx, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x41179d
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 0x24]
jae 0x411799
add edi, eax
cmp edi, esi
mov eax, dword [esp + 0x28]
jb 0x411130
jmp 0x41179d
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c5e8]
mov word [esp + 0x128], 0x35aa
mov dword [esp + 0x12e], 0
mov dword [esp + 0x12a], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 9
ja 0x4111f5
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0x128]
lea edx, [eax + 0x6bed0a09]
and edx, ecx
add eax, ecx
add eax, 0x6bed0a09
add edx, edx
sub eax, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xc1
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0x128], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 0xa
jb 0x4111b0
push 3
lea eax, [esp + 0x12c]
push eax
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c5f0]
movzx eax, bl
lea ebx, [esp + 0x40]
jmp dword [eax*4 + 0x43c5f8]
mov word [esp + 0x40], 0x21b6
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov dword [esp + 0x49], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xc
ja 0x4112a6
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add eax, 0xdb
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0xedc493db
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 3
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xd
jb 0x411260
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
mov dword [esp + 0x24], eax
mov word [esp + 0x40], 0xa515
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov byte [esp + 0x4a], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xa
ja 0x411335
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0xc5]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0x2be73dc5
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd0]
add al, 0x9d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xb
jb 0x4112f0
push ebx
push dword [esp + 8]
call fcn.00402920
add esp, 8
mov dword [esp + 0x20], eax
mov word [esp + 0x40], 0xd8a
mov dword [esp + 0x46], 0
mov dword [esp + 0x42], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 9
ja 0x4113b6
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x6e4e3baa
add eax, 0x6e4e3baa
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 0x5a
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xa
jb 0x411370
push ebx
push dword [esp + 8]
call fcn.00402850
add esp, 8
mov dword [esp + 0xb4], eax
mov word [esp + 0x40], 0x2582
mov dword [esp + 0x42], 0
mov dword [esp + 0x45], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 8
ja 0x41145c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x40]
lea esi, [ecx + 0x797f1f05]
lea eax, [ecx + edx]
add eax, 0x797f1f05
add ecx, 5
mov edi, esi
and edi, ecx
and edi, edx
xor ecx, esi
and ecx, edx
lea ecx, [ecx + edi*2]
mov edx, eax
not edx
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0xd0]
add al, 0xdd
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 9
jb 0x411400
push ebx
push dword [esp + 8]
call fcn.004028b0
add esp, 8
fnstcw word [esp + 0xb0]
movzx eax, word [esp + 0xb0]
or eax, 0xc00
mov word [esp + 0xcc], ax
fldcw word [esp + 0xcc]
fistp dword [esp + 0x13c]
fldcw word [esp + 0xb0]
mov eax, dword [esp + 0x13c]
mov dword [esp + 0x3c], eax
mov word [esp + 0x40], 0x786c
mov byte [esp + 0x42], 0xc4
mov dword [esp + 0x43], 0
mov dword [esp + 0x47], 0
mov word [esp + 0x4b], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xc
ja 0x411526
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add eax, 0xa1
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x7bd359a1
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 0x99
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xd
jb 0x4114e0
push ebx
push dword [esp + 8]
call fcn.004028b0
add esp, 8
mov esi, 0xffffffff
mov ecx, dword [esp + 0x24]
nop
nop
nop
nop
cmp byte [ecx + esi + 1], 0
lea esi, [esi + 1]
jne 0x411540
fnstcw word [esp + 0xae]
movzx eax, word [esp + 0xae]
or eax, 0xc00
mov word [esp + 0xca], ax
fldcw word [esp + 0xca]
fistp dword [esp + 0x138]
fldcw word [esp + 0xae]
mov eax, dword [esp + 0x138]
mov dword [esp + 0xa8], eax
mov edx, ecx
add edx, esi
xor edi, edi
test esi, esi
mov dword [esp + 4], edx
jle 0x4115db
cmp byte [ecx], 0
je 0x4115db
xor edi, edi
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
push edx
push ebx
call fcn.0040ec20
mov edx, dword [esp + 0x10]
add esp, 0xc
lea ecx, [ebx + eax]
inc edi
cmp ecx, edx
jae 0x4115db
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x4115b0
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x4115e9
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x40], 0
lea ecx, [eax + edi*2]
mov ebx, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
cmp ecx, eax
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 4]
jbe 0x411722
mov ebx, dword [esp + 0x30]
test esi, esi
jle 0x411722
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], edi
nop
nop
nop
nop
nop
cmp byte [ecx], 0
je 0x411722
lea eax, [esp + 0x40]
push eax
push edx
push ecx
mov esi, ecx
mov edi, edx
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 0x1c]
jae 0x41171e
add esi, eax
cmp esi, edi
mov ecx, esi
mov edx, edi
mov edi, dword [esp + 0x28]
jb 0x411630
jmp 0x411722
mov word [esp + 0xb8], 0x8c80
mov byte [esp + 0xba], pe_nt_image_headers32
mov dword [esp + 0xbb], 0
mov word [esp + 0xbf], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 8
ja 0x4116f6
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx edx, byte [esp + ecx + 0xb8]
mov ecx, 0x9cf6a9d0
sub ecx, eax
add eax, 0x2f
and eax, edx
or ecx, edx
not ecx
add ecx, edx
sub ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x2c]
add al, 0xb7
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0xb8], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 9
jb 0x4116b0
push 3
lea eax, [esp + 0xbc]
push eax
push dword [esp + 0xc]
call fcn.00402ae0
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
lea ebx, [esp + 0x40]
jmp dword [ecx*4 + 0x43c5f8]
mov edi, dword [esp + 0x28]
mov word [ebx], 0
lea eax, [esp + 8]
push eax
push 0
push 0
push edi
mov ebx, dword [esp + 0x40]
push ebx
push 0
call dword [0x441d68]
mov esi, dword [esp + 8]
lea eax, [esi + esi]
test esi, esi
jns 0x41174e
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov ecx, eax
lea eax, [esp + 8]
push eax
push esi
mov dword [esp + 0x2c], ecx
push ecx
push edi
push ebx
push 0
call dword [0x441d68]
jmp dword [0x43c600]
push ebx
call fcn.00408f70
add esp, 4
mov ecx, dword [esp + 0xb4]
mov eax, ecx
jmp 0x412c00
mov ecx, dword [esp + 0xb4]
mov edi, ecx
jmp 0x412bf4
mov eax, dword [esp + 0x28]
mov word [ebx], 0
mov esi, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax + esi + 1], 0
lea esi, [esi + 1]
jne 0x4117b0
add dword [esp + 4], esi
test esi, esi
mov dword [esp + 0x24], esi
jle 0x41180d
xor edi, edi
cmp byte [eax], 0
je 0x41180f
xor edi, edi
mov ebx, dword [esp + 0x28]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
mov esi, dword [esp + 8]
push esi
push ebx
call fcn.0040ec20
add esp, 0xc
lea ecx, [ebx + eax]
inc edi
cmp ecx, esi
jae 0x41180f
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x4117e0
jmp 0x41180f
xor edi, edi
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x41181d
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x40], 0
lea ecx, [eax + edi*2]
mov edi, eax
mov dword [esp + 0x20], ecx
cmp ecx, eax
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0x28]
jbe 0x41187f
mov edi, eax
cmp dword [esp + 0x24], 0
jle 0x41187f
mov edi, eax
nop
nop
cmp byte [ebx], 0
je 0x41187f
lea eax, [esp + 0x40]
push eax
mov esi, dword [esp + 8]
push esi
push ebx
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [edi], cx
add edi, 2
cmp edi, dword [esp + 0x20]
jae 0x41187f
add ebx, eax
cmp ebx, esi
jb 0x411850
mov word [edi], 0
mov word [esp + 0x40], 0x1d2d
mov byte [esp + 0x42], 0x94
mov dword [esp + 0x43], 0
mov byte [esp + 0x47], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 7
ja 0x4118f6
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x15b801bd
add eax, 0x15b801bd
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 0xd5
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 8
jb 0x4118b0
lea eax, [esp + 0x40]
push eax
push dword [ebp + 8]
call fcn.00402920
add esp, 8
xor edx, edx
mov dword [esp + 0x24], eax
test eax, eax
setne dl
xor edi, edi
mov dword [esp + 0x20], 0
jmp dword [edx*4 + 0x43c658]
push dword [esp + 0x24]
call fcn.00402b50
add esp, 4
mov edi, eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov esi, 0xffffffff
add eax, 4
jb 0x41194b
mov esi, eax
test dl, dl
jne 0x411951
mov ecx, esi
push ecx
call fcn.00408f60
add esp, 4
mov dword [eax], edi
add eax, 4
mov dword [esp + 0x20], eax
xor eax, eax
test edi, edi
sete al
jmp dword [eax*4 + 0x43c660]
lea eax, [edi + edi*2]
mov ecx, dword [esp + 0x20]
lea eax, [ecx + eax*4]
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 + 0x43c668]
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 + 0x43c668]
xor ebx, ebx
xor eax, eax
cmp ebx, edi
setb al
mov dword [esp + 4], edi
jmp dword [eax*4 + 0x43c670]
push ebx
push dword [esp + 0x28]
call fcn.00402b60
add esp, 8
mov edi, eax
mov word [esp + 0x40], 0x4f45
mov byte [esp + 0x42], 0xda
lea eax, [esp + 0x43]
mov byte [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xf
ja 0x411a76
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x39ea7e4
add eax, 0x39ea7e4
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd0]
add al, 0xc4
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x10
jb 0x411a30
lea eax, [esp + 0x40]
push eax
push edi
call fcn.00402850
add esp, 8
mov dword [esp + 0x28], eax
mov word [esp + 0x40], 0xcb39
mov byte [esp + 0x42], 0x40
lea eax, [esp + 0x43]
mov word [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xc
ja 0x411b1a
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx edx, byte [esp + ecx + 0x40]
lea esi, [eax - 0x2c1e5735]
lea ecx, [eax + edx]
add ecx, 0xd3e1a8cb
add eax, 0xcb
or eax, esi
and esi, edx
and eax, edx
add eax, esi
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd0]
add al, 0x73
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xd
jb 0x411ac0
lea eax, [esp + 0x40]
push eax
push edi
call fcn.00402850
add esp, 8
mov esi, eax
mov dword [esp + 0x40], 0x36a6972
lea eax, [esp + 0x43]
mov dword [eax + 8], 0
mov dword [eax + 5], 0
mov dword [eax + 1], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xe
ja 0x411ba5
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x81]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0xb0e85d81
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd0]
add al, 0x79
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xf
jb 0x411b60
lea eax, [esp + 0x40]
push eax
push edi
call fcn.00402980
add esp, 8
xor edx, edx
test eax, eax
setg dl
lea eax, [ebx + ebx*2]
mov ecx, dword [esp + 0x20]
lea ecx, [ecx + eax*4]
push edx
push dword [esp + 0x2c]
push esi
call fcn.004149e0
inc ebx
mov eax, dword [0x43c680]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov dword [esp + 4], edi
lea ebx, [esp + 0x40]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
jmp dword [0x43c688]
jmp dword [0x43c628]
mov eax, dword [case.0x411045.1]
jmp eax
xor eax, eax
test edi, edi
setne al
xor esi, esi
mov dword [esp + 0x20], 0
lea ebx, [esp + 0x40]
jmp dword [eax*4 + 0x43c6f8]
mov ecx, ebx
push 3
call fcn.00409740
push esi
mov edi, dword [esp + 0x24]
push edi
push dword [esp + 0x44]
push dword [esp + 0xb4]
push ebx
call fcn.00417760
add esp, 0x14
mov ecx, ebx
call fcn.0040a0c0
xor eax, eax
test edi, edi
sete al
jmp dword [eax*4 + 0x43c728]
push edi
call fcn.00402b50
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov esi, 0xffffffff
add eax, 4
jb 0x4124ff
mov esi, eax
test dl, dl
jne 0x412505
mov ecx, esi
push ecx
call fcn.00408f60
add esp, 4
mov edx, dword [esp + 0x24]
mov dword [eax], edx
add eax, 4
xor ecx, ecx
test edx, edx
sete cl
mov dword [esp + 0x30], edi
jmp dword [ecx*4 + 0x43c700]
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + ecx*2]
lea esi, [eax + ecx*4]
mov edx, dword [0x43c710]
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
jmp edx
mov edi, eax
inc eax
cmp byte [edi], 0
jne case.0x410c12.5
mov eax, edi
sub eax, ecx
xor ebx, ebx
mov dword [esp + 0x20], eax
test eax, eax
jle 0x4125d7
cmp byte [ecx], 0
je 0x4125d7
xor ebx, ebx
mov esi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
push edi
push esi
call fcn.0040ec20
add esp, 0xc
lea ecx, [esi + eax]
inc ebx
cmp ecx, edi
jae 0x4125d7
cmp byte [esi + eax], 0
mov esi, ecx
jne 0x4125b0
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x4125e5
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov esi, eax
mov dword [esp + 0x40], 0
lea eax, [eax + ebx*2]
mov dword [esp + 4], eax
cmp eax, esi
jbe 0x41263b
cmp dword [esp + 0x20], 0
jle 0x41263b
mov ebx, dword [esp + 0x1c]
nop
nop
cmp byte [ebx], 0
je 0x41263b
lea eax, [esp + 0x40]
push eax
push edi
push ebx
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 4]
jae 0x41263b
add ebx, eax
cmp ebx, edi
jb 0x412610
mov word [esi], 0
mov edi, 0xfffffffe
xor eax, eax
mov ecx, dword [esp + 0x28]
nop
nop
nop
nop
nop
add edi, 2
cmp byte [ecx + eax], 0
lea eax, [eax + 1]
jne 0x412650
lea ebx, [eax - 1]
lea ecx, [edi + 2]
test eax, eax
jns 0x41266b
mov ecx, 0xffffffff
push ecx
call fcn.00408f60
add esp, 4
mov ecx, eax
cmp dword [esp + 0x28], 0
jne 0x412699
xor eax, eax
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc ebx
cmp byte [eax], 0
lea eax, [eax + 1]
jne 0x412690
mov dword [esp + 0x40], 0
add edi, ecx
cmp edi, ecx
jbe 0x4126f5
test ebx, ebx
jle 0x4126f5
mov esi, dword [esp + 0x28]
add ebx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi], 0
je 0x4126f5
lea eax, [esp + 0x40]
push eax
push ebx
push esi
mov dword [esp + 0x10], ecx
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov edx, dword [esp + 4]
mov word [edx], cx
mov ecx, dword [esp + 4]
add ecx, 2
cmp ecx, edi
jae 0x4126f5
add esi, eax
cmp esi, ebx
jb 0x4126c0
mov word [ecx], 0
mov word [esp + 0x40], 0x796d
mov byte [esp + 0x42], 0xc2
mov dword [esp + 0x43], 0
mov dword [esp + 0x46], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 9
ja 0x41277a
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
add eax, 0x99f7f4e0
mov edx, eax
and edx, ecx
mov esi, eax
xor esi, ecx
or eax, ecx
xor eax, esi
lea ecx, [esi + edx*2]
add eax, edx
sub ecx, eax
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0xd0]
add al, 0xe0
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xa
jb 0x412730
lea eax, [esp + 0x40]
push eax
push dword [ebp + 8]
call fcn.00402920
add esp, 8
mov eax, dword [esp + 0x1c]
mov esi, eax
lea eax, [esi + 1]
cmp byte [esi], 0
jne 0x41278e
mov ecx, esi
mov eax, dword [esp + 0x1c]
sub ecx, eax
xor ebx, ebx
test ecx, ecx
mov dword [esp + 0x20], ecx
jle 0x4127e7
cmp byte [eax], 0
je 0x4127e7
xor ebx, ebx
mov edi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040ec20
add esp, 0xc
lea ecx, [edi + eax]
inc ebx
cmp ecx, esi
jae 0x4127e7
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x4127c0
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x4127f5
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x40], 0
lea ecx, [eax + ebx*2]
mov ebx, eax
mov dword [esp + 0xa8], eax
mov dword [esp + 4], ecx
cmp ecx, eax
jbe 0x41286b
mov ebx, dword [esp + 0xa8]
cmp dword [esp + 0x20], 0
jle 0x41286b
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0xa8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x41286b
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 4]
jae 0x41286b
add edi, eax
cmp edi, esi
jb 0x412840
mov word [ebx], 0
mov esi, 0xfffffffe
xor eax, eax
mov edi, dword [esp + 0x28]
nop
nop
nop
nop
nop
add esi, 2
cmp byte [edi + eax], 0
lea eax, [eax + 1]
jne 0x412880
lea ebx, [eax - 1]
lea ecx, [esi + 2]
test eax, eax
jns 0x41289b
mov ecx, 0xffffffff
push ecx
call fcn.00408f60
add esp, 4
mov dword [esp + 0x3c], eax
test edi, edi
mov ecx, ebx
jne 0x4128c9
mov ecx, edi
not ecx
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc ecx
cmp byte [eax], 0
lea eax, [eax + 1]
jne 0x4128c0
mov dword [esp + 0x40], 0
mov eax, dword [esp + 0x3c]
add esi, eax
mov ebx, eax
cmp esi, eax
jbe 0x41292d
mov ebx, dword [esp + 0x3c]
test ecx, ecx
jle 0x41292d
mov edi, dword [esp + 0x28]
add ecx, edi
mov ebx, dword [esp + 0x3c]
mov dword [esp + 4], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x41292d
lea eax, [esp + 0x40]
push eax
push ecx
push edi
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, esi
jae 0x41292d
add edi, eax
mov ecx, dword [esp + 4]
cmp edi, ecx
jb 0x412900
mov word [ebx], 0
mov word [esp + 0x40], 0x796d
mov byte [esp + 0x42], 0xc2
mov dword [esp + 0x43], 0
mov dword [esp + 0x46], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 9
ja 0x4129aa
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x40]
add eax, 0x99f7f4e0
mov edx, eax
and edx, ecx
mov esi, eax
xor esi, ecx
or eax, ecx
xor eax, esi
lea ecx, [esi + edx*2]
add eax, edx
sub ecx, eax
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0xd0]
add al, 0xe0
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xa
jb 0x412960
lea eax, [esp + 0x40]
push eax
push dword [ebp + 8]
call fcn.00402920
add esp, 8
mov edi, eax
mov ecx, dword [esp + 0x1c]
mov eax, ecx
jmp dword [0x43c6f0]
mov ebx, dword [esp + 0x28]
inc ebx
mov esi, dword [esp + 0x20]
push esi
call fcn.00402b50
add esp, 4
xor ecx, ecx
cmp ebx, eax
setb cl
jmp dword [ecx*4 + 0x43c608]
mov dword [esp + 0x28], ebx
push ebx
push esi
call fcn.00402b30
add esp, 8
push eax
call fcn.00402890
add esp, 4
mov esi, eax
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x43c610]
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
inc eax
cmp byte [edi], 0
jne 0x412a20
sub edi, esi
mov eax, edi
inc eax
jns 0x412a40
mov eax, 0xffffffff
jmp 0x412a46
lea eax, [edi + edi]
add eax, 2
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x1c], eax
mov eax, edi
test esi, esi
jne 0x412a69
mov eax, esi
not eax
xor ecx, ecx
nop
inc eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x412a60
mov dword [esp + 0xd0], 0
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + edi*2]
mov ebx, ecx
mov dword [esp + 4], edx
cmp edx, ecx
jbe 0x412ae0
mov ebx, dword [esp + 0x1c]
test eax, eax
jle 0x412ae0
mov edi, esi
add edi, eax
mov ebx, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi], 0
je 0x412ae0
lea eax, [esp + 0xd0]
push eax
push edi
push esi
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0xd0]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 4]
jae 0x412ae0
add esi, eax
cmp esi, edi
jb 0x412aa0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], 0
push 0
push dword [esp + 0x40]
push dword [esp + 0xb0]
mov esi, dword [esp + 0x28]
push esi
push dword [esp + 0x34]
push dword [esp + 0x44]
lea ebx, [esp + 0x58]
mov edi, ebx
push ebx
call fcn.00419e40
add esp, 0x1c
jmp dword [0x43c618]
push esi
call fcn.00408f70
add esp, 4
jmp case.0x411717.7
mov eax, edi
sub eax, ecx
xor ebx, ebx
test eax, eax
mov dword [esp + 0x1c], eax
jle 0x412b67
cmp byte [ecx], 0
je 0x412b67
xor ebx, ebx
mov esi, dword [esp + 0xb4]
nop
nop
mov dword [esp + 0x40], 0
lea eax, [esp + 0x40]
push eax
push edi
push esi
call fcn.0040ec20
add esp, 0xc
lea ecx, [esi + eax]
inc ebx
cmp ecx, edi
jae 0x412b67
cmp byte [esi + eax], 0
mov esi, ecx
jne 0x412b40
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x412b75
mov eax, 0xffffffff
push eax
call fcn.00408f60
add esp, 4
mov dword [esp + 0x40], 0
lea ecx, [eax + ebx*2]
mov ebx, eax
mov dword [esp + 4], ecx
cmp ecx, eax
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x30], eax
jbe 0x412bdb
mov ebx, eax
cmp dword [esp + 0x1c], 0
jle 0x412bdb
mov ebx, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi], 0
je 0x412bdb
lea eax, [esp + 0x40]
push eax
push edi
push esi
call fcn.0040ec20
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, dword [esp + 4]
jae 0x412bdb
add esi, eax
cmp esi, edi
jb 0x412bb0
mov word [ebx], 0
lea ecx, [esp + 0x40]
mov edi, ecx
push 1
call fcn.00409740
xor ebx, ebx
jmp 0x4129d5
lea eax, [edi + 1]
cmp byte [edi], 0
je 0x412b22
mov edi, eax
jmp 0x412bf4
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret