Function at 0x40f960
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 [str.7567fff5468f5b682780aea4c2eb6266]
mov dword [esp + 0xb8], 0xd29042bd
mov word [esp + 0xbc], 0
mov byte [esp + 0xbe], 0
mov dword [esp + 0x1b8], 0
mov eax, dword [esp + 0x1b8]
cmp eax, 6
ja 0x40d77e
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x1b8]
mov edx, dword [esp + 0x1b8]
movzx edx, byte [esp + edx + 0xb8]
add eax, 0xb59af4e1
xor eax, edx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0x2a0]
add al, 0xca
mov edx, dword [esp + 0x1b8]
mov byte [esp + edx + 0xb8], al
inc dword [esp + 0x1b8]
mov eax, dword [esp + 0x1b8]
cmp eax, 7
jb 0x40d730
mov edx, dword [str.hRjzG3__DEXTER]
mov dword [esp + 0x2a0], 0xc2fae6e5
mov dword [esp + 0x2a4], 0xeae1ecf2
mov dword [esp + 0x2a8], 0xfae9e0f2
mov dword [esp + 0x2ac], 0xeaf9fae5
mov dword [esp + 0x2b0], 0xe9b8f8fb
mov dword [esp + 0x2b4], 0xafd7e3fd
mov dword [esp + 0x2b8], 0xebb0adaa
mov dword [esp + 0x2bc], 0x9bdff5f1
mov dword [esp + 0x2c0], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 0x23
ja 0x40d84c
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x24]
movzx esi, byte [esp + esi + 0x2a0]
lea edi, [eax + esi]
xor eax, 0x80
and eax, esi
add eax, eax
sub edi, eax
add edi, 0x237c6780
mov dword [esp + 0x1b8], edi
mov eax, dword [esp + 0x1b8]
add al, 0xfc
mov esi, dword [esp + 0x24]
mov byte [esp + esi + 0x2a0], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 0x24
jb 0x40d800
movzx ebx, byte [esp + 0x2a0]
lea eax, [esp + 0x1b8]
test bl, bl
je 0x40d87b
lea esi, [esp + 0x2a1]
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 0x40d870
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40d89b
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 0x40d890
mov byte [eax], 0
movzx edx, byte [esp + 0xb8]
test dl, dl
je 0x40d8cb
lea esi, [esp + 0xb9]
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 0x40d8c0
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40d8eb
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 0x40d8e0
mov byte [eax], 0
mov dword [esp + 0x2a0], 0x3b5054b
mov dword [esp + 0x2a4], 0xfbc01b0
mov dword [esp + 0x2a8], 0xbbe0da5
mov dword [esp + 0x2ac], 0x177b09b6
mov dword [esp + 0x2b0], 0x1393154a
mov dword [esp + 0x2b4], 0x1fbb11a2
mov dword [esp + 0x2b8], 0x1b7c1d58
mov dword [esp + 0x2bc], 0x67a819b5
mov dword [esp + 0x2c0], 0x63d065d6
mov dword [esp + 0x2c4], 0x6fcd61d5
mov dword [esp + 0x2c8], 0x6bd06dc1
mov dword [esp + 0x2cc], 0x77d969dd
mov dword [esp + 0x2d0], 0x730575c4
mov dword [esp + 0x2d4], 0x7f0371ca
mov dword [esp + 0x2d8], 0x7bc57dc7
mov dword [esp + 0x2dc], 0x470b79c3
mov dword [esp + 0x2e0], 0x43f545ec
mov dword [esp + 0x2e4], 0x4ff341fc
mov dword [esp + 0x2e8], 0x4bf74d3d
mov dword [esp + 0x2ec], 0x57fc49f4
mov dword [esp + 0x2f0], 0x53e655fd
mov dword [esp + 0x2f4], 0x5fe151ff
mov dword [esp + 0x2f8], 0x5bf75df2
mov dword [esp + 0x2fc], 0xa74b59f6
mov dword [esp + 0x300], 0xa3a4a5b0
mov dword [esp + 0x304], 0
lea ecx, [esp + 0x1b8]
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x24]
cmp edx, 0x67
ja 0x40da71
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, 0x387b1d21
xor edx, esi
mov dword [esp + 0xb8], edx
mov edx, dword [esp + 0xb8]
add dl, 0xd9
mov esi, dword [esp + 0x24]
mov byte [esp + esi + 0x2a0], dl
inc dword [esp + 0x24]
mov edx, dword [esp + 0x24]
cmp edx, 0x68
jb 0x40da30
sub eax, ecx
mov dword [esp + 0xb8], 0x86e0a5a
mov dword [esp + 0xbc], 0xc620e9f
mov word [esp + 0xc0], 0x3233
mov dword [esp + 0xc2], 0
mov byte [esp + 0xc6], 0
mov dword [esp + 0x238], 0
mov edx, dword [esp + 0x238]
cmp edx, 0xe
ja 0x40db0a
nop
nop
nop
mov edx, dword [esp + 0x238]
mov esi, dword [esp + 0x238]
movzx esi, byte [esp + esi + 0xb8]
add edx, 0x999fb618
xor edx, esi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
add dl, 0xed
mov esi, dword [esp + 0x238]
mov byte [esp + esi + 0xb8], dl
inc dword [esp + 0x238]
mov edx, dword [esp + 0x238]
cmp edx, 0xf
jb 0x40dac0
lea edx, [esp + 0xb4]
lea esi, [esp + 0x1c]
lea edi, [esp + 0x2a0]
lea ebx, [esp + 0xb8]
push edx
push esi
mov esi, edi
push eax
push ecx
push edi
push ebx
push 0x449608
call fcn.0040c030
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x4451b0]
xor esi, esi
xor eax, eax
test esi, 0
sete al
jmp dword [eax*4 + 0x4451c8]
push 0x104
push esi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0xb4]
mov ecx, eax
or ecx, 3
mov edi, eax
and edi, 3
imul ecx, edi
mov edx, eax
and edx, 0xfffffffc
xor edi, 3
imul edi, edx
add edi, ecx
shr edi, 2
movzx ecx, byte [esi + eax - 1]
cmp ecx, 0x3d
je 0x40db99
cmp ecx, 0x2e
jne 0x40dba0
mov ecx, edi
not ecx
lea edi, [ecx + edi*2]
movzx eax, byte [esi + eax - 2]
cmp eax, 0x3d
je 0x40dbaf
cmp eax, 0x2e
jne 0x40dbb6
dec edi
jmp dword [0x4451b8]
jmp dword [0x4451b8]
push edi
call fcn.00409620
add esp, 4
push eax
push esi
call fcn.004382b0
add esp, 8
nop
push edi
call fcn.00409620
add esp, 4
mov esi, eax
push eax
push dword [esp + 0x20]
call fcn.004382b0
add esp, 8
jmp dword [0x4451c0]
push dword [esp + 0x1c]
call fcn.0043b460
add esp, 4
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x4451c8]
push esi
call fcn.00402990
add esp, 4
mov edi, eax
jmp dword [0x4451d0]
push esi
call fcn.00409630
add esp, 4
push edi
call fcn.004032a0
add esp, 4
mov dword [esp + 0x18], eax
mov word [esp + 0x2a0], 0x2d35
mov byte [esp + 0x2a2], 0xc5
mov word [esp + 0x2a3], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 4
ja 0x40dcb6
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a0]
mov edx, eax
and edx, 0x9d91282
xor eax, 0x9d91282
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
mov ecx, eax
not ecx
and ecx, 0x41
and eax, 0xbe
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, 5
jb 0x40dc60
lea esi, [esp + 0x2a0]
push esi
push dword [esp + 0x1c]
call fcn.00403320
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x4451d8]
call fcn.004366c0
movzx eax, al
jmp dword [eax*4 + 0x4451e0]
mov word [esp + 0x2a0], 0x5a5c
mov byte [esp + 0x2a2], 0xff
mov dword [esp + 0x2a3], 0
mov byte [esp + 0x2a7], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 7
ja 0x40dd5f
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx ecx, byte [esp + ecx + 0x2a0]
add eax, 0x8094204d
xor eax, ecx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
add al, 0x50
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 8
jb 0x40dd20
push esi
push dword [esp + 0x1c]
call fcn.00403320
add esp, 8
mov dword [esp + 0xa4], eax
mov word [esp + 0x2a0], 0xc7f2
mov byte [esp + 0x2a2], 0x63
mov word [esp + 0x2a3], 0
mov byte [esp + 0x2a5], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 5
ja 0x40ddf9
nop
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, 0x87fccb51
xor eax, ecx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xb8]
mov ecx, eax
xor ecx, 0x30
and eax, 0x4f
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 0x40ddb0
push esi
mov esi, dword [esp + 0x1c]
push esi
call fcn.00403320
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
mov dword [esp + 0xac], ecx
push esi
call fcn.0040ea20
add esp, 4
push edi
call fcn.00403510
add esp, 4
lea edi, [esp + 0x238]
mov ecx, edi
push 1
call fcn.00409dc0
push edi
call fcn.0041c560
add esp, 4
mov ecx, edi
call fcn.0040a670
lea edi, [esp + 0xc40]
mov ecx, edi
push 3
call fcn.00409dc0
push edi
call fcn.0041cc60
add esp, 4
mov ecx, edi
call fcn.0040a670
lea edi, [esp + 0xbd8]
mov ecx, edi
push 1
call fcn.00409dc0
push edi
call fcn.0041cf10
add esp, 4
mov ecx, edi
call fcn.0040a670
lea edi, [esp + 0xb70]
mov ecx, edi
push 1
call fcn.00409dc0
push edi
call case.0x41e59d.30
add esp, 4
push edi
call fcn.0041f420
add esp, 4
push edi
call fcn.0041f860
add esp, 4
push edi
call fcn.00422650
add esp, 4
mov ecx, edi
call fcn.0040a670
lea edi, [esp + 0xb08]
mov ecx, edi
push 1
call fcn.00409dc0
push edi
call fcn.004217c0
add esp, 4
mov ecx, edi
call fcn.0040a670
lea edi, [esp + 0xaa0]
mov ecx, edi
push 1
call fcn.00409dc0
push edi
call fcn.00426aa0
add esp, 4
push edi
call fcn.00432460
add esp, 4
mov eax, dword [esp + 0xac]
jmp dword [eax*4 + 0x4451e8]
push edi
call fcn.004240a0
add esp, 4
lea ecx, [esp + 0xaa0]
call fcn.0040a670
mov dword [esp + 0x24], 0x75627cbf
mov word [esp + 0x28], 0x5b7d
mov byte [esp + 0x2a], 0x9f
mov word [esp + 0x2b], 0
mov dword [esp + 0xb8], 0
mov eax, dword [esp + 0xb8]
cmp eax, 8
ja 0x40dfa8
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, 0x1ba85256
xor eax, ecx
mov dword [esp + 0x2a0], eax
mov eax, dword [esp + 0x2a0]
add al, 0x3d
mov ecx, dword [esp + 0xb8]
mov byte [esp + ecx + 0x24], al
inc dword [esp + 0xb8]
mov eax, dword [esp + 0xb8]
cmp eax, 9
jb 0x40df60
mov eax, dword [str.7567fff5468f5b682780aea4c2eb6266]
mov dword [esp + 4], 0x14d280c5
mov word [esp + 8], 0
mov dword [esp + 0xb8], 0
mov ecx, dword [esp + 0xb8]
cmp ecx, 5
ja 0x40e02a
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 + 4]
add ecx, 0xee6b7dc6
xor ecx, edx
mov dword [esp + 0x2a0], ecx
mov ecx, dword [esp + 0x2a0]
add cl, 0x23
mov edx, dword [esp + 0xb8]
mov byte [esp + edx + 4], cl
inc dword [esp + 0xb8]
mov ecx, dword [esp + 0xb8]
cmp ecx, 6
jb 0x40dfe0
mov ecx, dword [str.hRjzG3__DEXTER]
mov dword [esp + 0x2a0], 0xade7f5f2
mov dword [esp + 0x2a4], 0xf7e3f3fc
mov dword [esp + 0x2a8], 0xefeefff6
mov dword [esp + 0x2ac], 0xb8f8f5fe
mov dword [esp + 0x2b0], 0x9dd1c7d7
mov dword [esp + 0x2b4], 0x80978a91
mov dword [esp + 0x2b8], 0x95cfc3c5
mov byte [esp + 0x2bc], 0xad
mov dword [esp + 0x2bd], 0
mov dword [esp + 0x2c0], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0x23
ja 0x40e0eb
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x2a0]
add edx, 0xc876390
xor edx, esi
mov dword [esp + 0xb8], edx
mov edx, dword [esp + 0xb8]
dec dl
mov esi, dword [esp]
mov byte [esp + esi + 0x2a0], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x24
jb 0x40e0b0
movzx edx, byte [esp + 0x2a0]
test dl, dl
je 0x40e11b
lea ebx, [esp + 0xb8]
lea esi, [esp + 0x2a1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], dl
inc ebx
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40e110
mov byte [ebx], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40e13b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], dl
inc ebx
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40e130
mov byte [ebx], 0
movzx ecx, byte [esp + 4]
test cl, cl
je 0x40e15b
lea edx, [esp + 5]
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40e150
mov byte [ebx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40e17b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40e170
mov byte [ebx], 0
movzx eax, byte [esp + 0x24]
test al, al
je 0x40e19b
lea ecx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40e190
mov byte [ebx], 0
movzx eax, byte [0x4495a8]
test al, al
je 0x40e1c1
xor ecx, ecx
nop
nop
nop
nop
nop
mov byte [ebx + ecx], al
movzx eax, byte [ecx + 0x4495a9]
inc ecx
test al, al
jne 0x40e1b0
add ebx, ecx
mov byte [ebx], 0
lea eax, [esp + 0xb8]
mov dword [esp + 0x2a0], 0x11ff6fad
mov dword [esp + 0x2a4], 0x158013fc
mov dword [esp + 0x2a8], 0x19f617f3
mov dword [esp + 0x2ac], 0x1d311b8e
mov dword [esp + 0x2b0], 0x1991fea
mov dword [esp + 0x2b4], 0x5e10392
mov dword [esp + 0x2b8], 0x92807dc
mov dword [esp + 0x2bc], 0xd9c0beb
mov dword [esp + 0x2c0], 0x31dc0f9e
mov dword [esp + 0x2c4], 0x35d733db
mov dword [esp + 0x2c8], 0x39ac37d7
mov dword [esp + 0x2cc], 0x3dd33bd3
mov dword [esp + 0x2d0], 0x210f3fd0
mov dword [esp + 0x2d4], 0x250923ba
mov dword [esp + 0x2d8], 0x29bf27b1
mov dword [esp + 0x2dc], 0x2d012bbd
mov dword [esp + 0x2e0], 0xd13f2fc8
mov dword [esp + 0x2e4], 0xd539d340
mov dword [esp + 0x2e8], 0xd94dd7fb
mov dword [esp + 0x2ec], 0xdd30db48
mov dword [esp + 0x2f0], 0xc12edf3b
mov dword [esp + 0x2f4], 0xc52bc321
mov dword [esp + 0x2f8], 0xc92dc722
mov dword [esp + 0x2fc], 0xcdc1cb2e
mov dword [esp + 0x300], 0xf1f0cfc4
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x63
ja 0x40e342
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x2a0]
lea esi, [ecx + edx]
add esi, 0x83b1afbe
add ecx, 0x83b1afbe
and ecx, edx
mov edx, esi
xor edx, ecx
add edx, ecx
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x24]
add cl, 0x30
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x2a0], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x64
jb 0x40e2f0
sub ebx, eax
mov dword [esp + 0x24], 0xc1a1c3f1
mov dword [esp + 0x28], 0xc5adc7b6
mov word [esp + 0x2c], 0xcbca
mov dword [esp + 0x2e], 0
mov byte [esp + 0x32], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x40e3bd
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
lea esi, [ecx + edx]
add ecx, 0xc0
and ecx, edx
add ecx, ecx
sub esi, ecx
add esi, 0x1071b1c0
mov dword [esp + 4], esi
mov ecx, dword [esp + 4]
add cl, 0xfe
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xf
jb 0x40e380
lea ecx, [esp + 0xb0]
lea edx, [esp + 0xa8]
lea esi, [esp + 0x24]
push ecx
push edx
push ebx
mov ebx, esi
push eax
lea eax, [esp + 0x2b0]
push eax
push esi
push 0x449608
call fcn.0040c030
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x4451f0]
xor esi, esi
xor eax, eax
test esi, 0
setne al
jmp dword [eax*4 + 0x4451f8]
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0xa8]
mov edx, ecx
or edx, 3
mov eax, ecx
and eax, 3
imul edx, eax
mov esi, ecx
and esi, 0xfffffffc
xor eax, 3
imul eax, esi
add eax, edx
shr eax, 2
movzx edx, byte [edi + ecx - 1]
cmp edx, 0x3d
je 0x40e443
cmp edx, 0x2e
jne 0x40e44a
mov edx, eax
not edx
lea eax, [edx + eax*2]
movzx ecx, byte [edi + ecx - 2]
cmp ecx, 0x3d
je 0x40e459
cmp ecx, 0x2e
jne 0x40e45a
dec eax
push eax
call fcn.00409620
add esp, 4
mov esi, eax
push eax
push edi
call fcn.004382b0
add esp, 8
push dword [esp + 0xa8]
call fcn.0043b460
add esp, 4
xor eax, eax
test esi, esi
setne al
jmp dword [eax*4 + 0x4451f8]
push esi
call fcn.00402990
add esp, 4
mov edi, eax
jmp dword [0x445200]
push esi
call fcn.00409630
add esp, 4
jmp dword [0x44520c]
push edi
call fcn.00403510
add esp, 4
xor eax, eax
jmp 0x40ea14
jmp dword [0x44520c]
push edi
call fcn.004117e0
add esp, 4
push edi
call fcn.00403510
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push edi
call fcn.004117e0
add esp, 4
push edi
call fcn.00403510
add esp, 4
jmp dword [0x445210]
mov dword [esp + 0x2a0], 0x47ede7e6
mov dword [esp + 0x2a4], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 7
ja 0x40e559
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x2a0]
add eax, 0xd7f3c23
xor eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
add al, 0x9f
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x2a0], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 8
jb 0x40e520
lea esi, [esp + 0x2a0]
push esi
push dword [esp + 0x1c]
call fcn.00403320
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x445218]
xor eax, eax
cmp dword [esp + 0xa4], 0
setg al
jmp dword [eax*4 + 0x445220]
lea ecx, [esp + 0x2a0]
push 1
call fcn.00409dc0
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax + 0x449911], 0
lea eax, [eax + 1]
jne 0x40e5b0
mov dword [esp + 0x24], 0x2d3d3f51
mov dword [esp + 0x28], 0x242b6c32
mov dword [esp + 0x2c], 0x6229
mov byte [esp + 0x30], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xc
ja 0x40e629
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
lea esi, [ecx + 0x77]
add ecx, edx
and esi, edx
add esi, esi
sub ecx, esi
add ecx, 0x145d1977
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x1e
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xd
jb 0x40e5f0
lea esi, [esp + 0x2a0]
mov ecx, esi
push eax
push 0x449910
push ebx
call fcn.00409fb0
mov ecx, esi
call fcn.0040a670
mov ecx, esi
call fcn.00409e00
xor eax, eax
cmp dword [esp + 0xa4], 0
setg al
lea esi, [esp + 0x2a0]
jmp dword [eax*4 + 0x445220]
push 0
call fcn.0043e820
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445228]
mov dword [esp + 0x24], 0x8c1a8e2e
mov dword [esp + 0x28], 0x88598a21
mov dword [esp + 0x2c], 0x74ef7624
mov dword [esp + 0x30], 0x709372d8
mov dword [esp + 0x34], 0x7ce07e9f
mov dword [esp + 0x38], 0x78da7ae1
mov dword [esp + 0x3c], 0x64fb66e7
mov dword [esp + 0x40], 0x60b06285
mov dword [esp + 0x44], 0x6cc66ef4
mov dword [esp + 0x48], 0x688b6aff
mov dword [esp + 0x4c], 0x54c256c6
mov dword [esp + 0x50], 0x508152f9
mov dword [esp + 0x54], 0x5cc75efc
mov dword [esp + 0x58], 0x58bb5af0
mov dword [esp + 0x5c], 0x449446b7
mov dword [esp + 0x60], 0x40a342ea
mov dword [esp + 0x64], 0x4ce64edd
mov dword [esp + 0x68], 0x48e64ad8
mov dword [esp + 0x6c], 0x34aa36da
mov dword [esp + 0x70], 0x30d332a9
mov dword [esp + 0x74], 0x3ca33ee2
mov dword [esp + 0x78], 0x38e43add
mov dword [esp + 0x7c], 0x24f426d9
mov dword [esp + 0x80], 0x20b022b7
mov dword [esp + 0x84], 0x2cb12e8f
mov dword [esp + 0x88], 0x288a2a80
mov dword [esp + 0x8c], 0x14f716be
mov dword [esp + 0x90], 0x10f312ff
mov dword [esp + 0x94], 0x1cb21ebd
mov dword [esp + 0x98], 0x18fb1a89
mov dword [esp + 0x9c], 0x40706f7
mov word [esp + 0xa0], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x7d
ja 0x40e7eb
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x24]
add ecx, 0xb177a677
xor ecx, edx
mov dword [esp + 0x2a0], ecx
mov ecx, dword [esp + 0x2a0]
add cl, 0xa
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x24], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x7e
jb 0x40e7b0
movzx ecx, word [esp + 0x24]
test cx, cx
je 0x40e811
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 0x40e800
mov word [esi], 0
movzx ecx, word [eax]
test cx, cx
je 0x40e841
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 0x40e830
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 [0x44a910]
call fcn.0043e950
add esp, 8
lea ecx, [esp + 4]
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 + 0x445230]
mov eax, dword [esp + 4]
mov dword [esp + 0x20], 0x494a4b4c
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x14]
cmp ecx, 3
ja 0x40e97f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x14]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0xc315bc3b
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
mov edx, ecx
not edx
and edx, 0x78
and ecx, 0x87
sub ecx, edx
mov edx, dword [esp + 0x14]
mov byte [esp + edx + 0x20], cl
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
cmp ecx, 4
jb 0x40e940
mov ecx, dword [0x44a91c]
test ecx, ecx
je case.0x40e660.0
mov edx, dword [esp + 0x20]
xor esi, esi
mov edi, dword [0x44a920]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x625b6034
je 0x40e9b0
inc esi
cmp ecx, esi
jne 0x40e9a0
jmp case.0x40e660.0
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je case.0x40e660.0
push eax
push 1
push dword [0x44a924]
push ecx
call fcn.0043d1c0
add esp, 0x10
lea ecx, [esp + 0xaa0]
call fcn.00409e00
lea ecx, [esp + 0xb08]
call fcn.00409e00
lea ecx, [esp + 0xb70]
call fcn.00409e00
lea ecx, [esp + 0xbd8]
call fcn.00409e00
lea ecx, [esp + 0xc40]
call fcn.00409e00
lea ecx, [esp + 0x238]
call fcn.00409e00
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
jmp dword [0x44524c]
xor ebx, ebx
mov dword [esp + 0x40], esi
jmp 0x40ead8
nop
nop
mov ebx, dword [esp + 0x12c]
inc ebx
push esi
call fcn.004034d0
add esp, 4
xor ecx, ecx
cmp ebx, eax
setb cl
mov al, 1
jmp dword [ecx*4 + 0x445250]
mov dword [esp + 0x12c], ebx
push ebx
push esi
call fcn.004034e0
add esp, 8
mov ebx, eax
mov word [esp + 0x98], 0xb11a
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40eb64
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0xbd7574f
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x1f
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40eb30
push 3
push edi
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x445258]
jmp dword [0x445260]
mov word [esp + 0x98], 0x3746
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40ebef
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + ecx]
add eax, 0x38
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x75949638
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x48]
add al, 0xf2
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40ebb0
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x1c], eax
mov dword [esp], 0x1491
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
cmp eax, 3
ja 0x40ec57
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
movzx ecx, byte [esp + ecx]
add eax, 0x6353f6f7
xor eax, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add al, 0x14
mov ecx, dword [esp + 0x48]
mov byte [esp + ecx], al
inc dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 4
jb 0x40ec20
mov eax, esp
push eax
push ebx
call fcn.004031f0
add esp, 8
mov ebx, dword [esp + 0x1c]
test ebx, ebx
sete dl
test eax, eax
sete cl
or cl, dl
movzx ecx, cl
jmp dword [ecx*4 + 0x445488]
mov ecx, ebx
mov edx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
inc ecx
cmp byte [ebx], 0
jne 0x40ec90
mov dword [esp + 0x20], eax
xor edi, edi
cmp ebx, edx
jbe 0x40ecdd
cmp byte [edx], 0
je 0x40ecdd
xor edi, edi
mov esi, dword [esp + 0x1c]
nop
nop
nop
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push ebx
push esi
call fcn.0040d570
add esp, 0xc
lea ecx, [esi + eax]
inc edi
cmp ecx, ebx
jae 0x40ecdd
cmp byte [esi + eax], 0
mov esi, ecx
jne 0x40ecb0
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x40eceb
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
lea ecx, [eax + edi*2]
mov edi, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], ecx
cmp eax, ecx
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
jae 0x40ed6b
mov edi, dword [esp + 0x38]
cmp esi, ebx
jae 0x40ed6b
mov edi, dword [esp + 0x38]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi], 0
je 0x40ed6b
lea eax, [esp + 0x98]
push eax
push ebx
push esi
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov word [edi], cx
add edi, 2
cmp edi, dword [esp + 0x10]
jae 0x40ed67
add esi, eax
cmp esi, ebx
mov eax, dword [esp + 0x20]
jb 0x40ed30
jmp 0x40ed6b
mov eax, dword [esp + 0x20]
mov word [edi], 0
xor esi, esi
mov edi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
add edi, 2
cmp byte [eax + esi], 0
lea esi, [esi + 1]
jne 0x40ed80
lea eax, [edi + 2]
test esi, esi
jns 0x40ed98
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
add edi, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], eax
cmp eax, edi
mov ecx, dword [esp + 0x20]
jae 0x40ee1b
lea ebx, [ecx + esi]
dec ebx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
cmp ecx, ebx
jae 0x40ee1b
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx], 0
je 0x40ee1b
lea eax, [esp + 0x98]
push eax
push ebx
push ecx
mov esi, ecx
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov edx, dword [esp + 0x10]
mov word [edx], cx
add edx, 2
mov dword [esp + 0x10], edx
cmp edx, edi
jae 0x40ee1b
add esi, eax
cmp esi, ebx
mov ecx, esi
jb 0x40ede0
mov eax, dword [esp + 0x10]
mov word [eax], 0
mov word [esp + 0x98], 0x7066
mov byte [esp + 0x9a], 0xfb
mov dword [esp + 0x9b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40ee90
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + 0xe0]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xc95e89e0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0xe7
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb case.default.0x40eeb8
lea edi, [esp + 0x98]
push edi
push dword [ebp + 8]
call fcn.004032c0
add esp, 8
xor ecx, ecx
mov dword [esp + 0x34], eax
test eax, eax
setne cl
xor ebx, ebx
mov dword [esp + 0x14], 0
jmp dword [ecx*4 + 0x445490]
mov ecx, edi
push 3
call fcn.00409dc0
push dword [esp + 0x14]
push ebx
push dword [esp + 0x2c]
push dword [esp + 0x44]
push edi
call fcn.00415f90
add esp, 0x14
mov ecx, edi
call fcn.0040a670
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x4454b0]
push dword [esp + 0x34]
call fcn.004034d0
add esp, 4
mov ecx, eax
mov dword [esp + 0x14], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov esi, 0xffffffff
add eax, 4
jb 0x40efa0
mov esi, eax
test dl, dl
jne 0x40efa6
mov ecx, esi
push ecx
call fcn.00409620
add esp, 4
mov ebx, eax
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
add ebx, 4
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x445498]
mov eax, dword [esp + 0x14]
lea eax, [eax + eax*2]
lea eax, [ebx + eax*4]
mov dword [ebx], 0
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
lea ecx, [ebx + 0xc]
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x4454a0]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
add ecx, 0xc
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x4454a0]
xor ecx, ecx
xor eax, eax
cmp ecx, dword [esp + 0x14]
setb al
mov dword [esp + 0x28], ebx
jmp dword [eax*4 + 0x4454a8]
jmp dword [0x4454f4]
push ebx
call fcn.004034d0
add esp, 4
xor ecx, ecx
cmp esi, eax
setb cl
jmp dword [ecx*4 + 0x4452e8]
mov dword [esp + 0x128], esi
push esi
push ebx
call fcn.004034b0
add esp, 8
push eax
call fcn.00403230
add esp, 4
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x445308]
jmp dword [0x4452fc]
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x14], eax
mov word [esp + 0x98], 0xe879
lea eax, [esp + 0x9a]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40f5c4
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0xb992fd3e
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x29
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x40f590
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x24], eax
mov word [esp + 0x98], 0xa42e
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40f63d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + 0x4f]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xa50bf14f
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0xc
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40f600
push edi
push ebx
call fcn.004032c0
add esp, 8
mov dword [esp + 0x34], eax
mov word [esp + 0x98], 0x4bcc
lea eax, [esp + 0x9a]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40f6c0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + 0xdc]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xb22b10dc
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x6a
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40f680
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x20], eax
mov word [esp + 0x98], 0x4ecd
lea eax, [esp + 0x9a]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40f734
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0xf411bbaf
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 2
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40f700
push edi
push ebx
call fcn.00403250
add esp, 8
mov word [esp + 0x98], 0x7c68
mov byte [esp + 0x9a], 0x90
mov word [esp + 0x9b], 0
fnstcw word [esp + 0x10e]
movzx eax, word [esp + 0x10e]
or eax, 0xc00
mov word [esp + 0x11e], ax
fldcw word [esp + 0x11e]
fistp dword [esp + 0x134]
fldcw word [esp + 0x10e]
mov eax, dword [esp + 0x134]
mov dword [esp + 0x28], eax
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40f7e4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0x4d0144e
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x40
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40f7b0
push edi
push ebx
call fcn.00403250
add esp, 8
xor esi, esi
mov edi, 0xfffffffe
mov eax, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
add edi, 2
cmp byte [eax + esi], 0
lea esi, [esi + 1]
jne 0x40f800
fnstcw word [esp + 0x10c]
movzx eax, word [esp + 0x10c]
or eax, 0xc00
mov word [esp + 0x11c], ax
fldcw word [esp + 0x11c]
fistp dword [esp + 0x130]
fldcw word [esp + 0x10c]
mov eax, dword [esp + 0x130]
mov dword [esp + 0x38], eax
lea eax, [edi + 2]
test esi, esi
jns 0x40f854
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
add edi, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
cmp eax, edi
mov ecx, dword [esp + 0x14]
jae 0x40f8cd
lea ebx, [ecx + esi]
dec ebx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
cmp ecx, ebx
jae 0x40f8cd
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
cmp byte [ecx], 0
je 0x40f8cd
lea eax, [esp + 0x98]
push eax
push ebx
push ecx
mov esi, ecx
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov edx, dword [esp + 0x10]
mov word [edx], cx
add edx, 2
mov dword [esp + 0x10], edx
cmp edx, edi
jae 0x40f8cd
add esi, eax
cmp esi, ebx
mov ecx, esi
jb 0x40f892
mov eax, dword [esp + 0x10]
mov word [eax], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
lea ecx, [esp + 0x48]
mov esi, dword [esp + 0x1c]
push esi
call fcn.0043b540
jmp dword [0x445370]
push esi
call fcn.00409630
add esp, 4
lea ecx, [esp + 0x48]
push 0x400
call fcn.0043b780
not eax
shr eax, 0x1f
lea edi, [esp + 0x98]
mov esi, dword [esp + 0x40]
jmp dword [eax*4 + 0x445378]
xor ecx, ecx
test eax, eax
setle cl
jmp dword [ecx*4 + 0x445288]
mov word [esp + 0x98], 0x475
lea eax, [esp + 0x9a]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40f9d4
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0x4b2b328c
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x77
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x40f9a0
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x14], eax
mov word [esp + 0x98], 0x6813
lea eax, [esp + 0x9a]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40fa44
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0x2c365dec
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x7b
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40fa10
push edi
push ebx
call fcn.004031f0
add esp, 8
mov ebx, dword [esp + 0x14]
test ebx, ebx
sete dl
test eax, eax
sete cl
or cl, dl
movzx ecx, cl
jmp dword [ecx*4 + 0x445410]
mov ecx, ebx
mov edx, ebx
nop
nop
nop
nop
mov ebx, ecx
inc ecx
cmp byte [ebx], 0
jne 0x40fa70
mov dword [esp + 0x10], eax
xor esi, esi
cmp ebx, edx
jbe 0x40fabd
cmp byte [edx], 0
je 0x40fabd
xor esi, esi
mov edi, dword [esp + 0x14]
nop
nop
nop
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push ebx
push edi
call fcn.0040d570
add esp, 0xc
lea ecx, [edi + eax]
inc esi
cmp ecx, ebx
jae 0x40fabd
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40fa90
mov eax, esi
inc eax
lea eax, [esi + esi + 2]
jns 0x40facb
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
lea ecx, [eax + esi*2]
mov esi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, ecx
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
jae 0x40fd69
mov esi, dword [esp + 0x20]
cmp edi, ebx
jae 0x40fd69
mov esi, dword [esp + 0x20]
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40fd69
lea eax, [esp + 0x98]
push eax
push ebx
push edi
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 0x1c]
jae 0x40fd65
add edi, eax
cmp edi, ebx
mov eax, dword [esp + 0x10]
jb 0x40fb10
jmp 0x40fd69
sete al
movzx eax, al
jmp dword [eax*4 + 0x445290]
mov word [esp + 0x98], 0x99e8
lea eax, [esp + 0x9a]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40fbd9
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + ecx]
add edx, 0xf4b98
add eax, 0xf4b98
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x40fb90
push 2
push edi
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445298]
mov word [esp + 0x48], 0x22cc
lea eax, [esp + 0x4a]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 4
ja 0x40fc53
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0x48]
add eax, 0xa191f62
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xbf
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0x48], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 5
jb 0x40fc20
push 5
lea eax, [esp + 0x4c]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x4452a0]
mov word [esp], 0x3bb0
mov dword [esp + 2], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 5
ja 0x40fcc1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx]
add eax, 0xc68ab662
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xa8
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 6
jb case.default.0x40fcd8
push 2
lea eax, [esp + 4]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x4452a8]
mov dword [esp + 0x44], 0x1cbf
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 3
ja 0x40fd33
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0x44]
add eax, 0xa57c8ee7
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xc
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0x44], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 4
jb 0x40fd00
push 3
lea eax, [esp + 0x48]
push eax
push ebx
call fcn.00403470
add esp, 0xc
mov ecx, dword [case.0x40fcd8.4]
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x4452c0]
jmp case.0x40eb77.1
mov eax, dword [esp + 0x10]
mov word [esi], 0
lea edi, [eax - 1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + 1], 0
lea edi, [edi + 1]
jne 0x40fd80
xor esi, esi
cmp eax, edi
jae 0x40fdcd
cmp byte [eax], 0
je 0x40fdcd
xor esi, esi
mov ebx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push edi
push ebx
call fcn.0040d570
add esp, 0xc
lea ecx, [ebx + eax]
inc esi
cmp ecx, edi
jae 0x40fdcd
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x40fda0
mov eax, esi
inc eax
lea eax, [esi + esi + 2]
jns 0x40fddb
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
lea ecx, [eax + esi*2]
mov esi, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], ecx
cmp eax, ecx
mov ebx, dword [esp + 0x10]
jae 0x40fe41
mov esi, dword [esp + 0x28]
cmp ebx, edi
jae 0x40fe41
mov esi, dword [esp + 0x28]
cmp byte [ebx], 0
je 0x40fe41
lea eax, [esp + 0x98]
push eax
push edi
push ebx
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 0x1c]
jae 0x40fe41
add ebx, eax
cmp ebx, edi
jb 0x40fe10
mov word [esi], 0
mov dword [esp], 0x66ffd3
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
cmp eax, 3
ja 0x40fe97
nop
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
movzx ecx, byte [esp + ecx]
add eax, 0xbdd7698f
xor eax, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add al, 9
mov ecx, dword [esp + 0x48]
mov byte [esp + ecx], al
inc dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 4
jb 0x40fe60
mov eax, esp
push eax
push dword [ebp + 8]
call fcn.004032c0
add esp, 8
xor ecx, ecx
mov dword [esp + 0x34], eax
test eax, eax
setne cl
xor edi, edi
mov dword [esp + 0x14], 0
jmp dword [ecx*4 + 0x445418]
mov dword [esp + 0x10], edi
lea edi, [esp + 0x98]
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x14]
jmp dword [0x445438]
push dword [esp + 0x34]
call fcn.004034d0
add esp, 4
mov dword [esp + 0x10], eax
mov edi, eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov esi, 0xffffffff
add eax, 4
jb 0x40ff85
mov esi, eax
test dl, dl
jne 0x40ff8b
mov ecx, esi
push ecx
call fcn.00409620
add esp, 4
mov dword [eax], edi
add eax, 4
xor ecx, ecx
test edi, edi
sete cl
jmp dword [ecx*4 + 0x445420]
lea ecx, [edi + edi*2]
lea esi, [eax + ecx*4]
mov dword [eax], 0
mov dword [eax + 4], 0
mov byte [eax + 8], 0
lea ecx, [eax + 0xc]
xor edx, edx
cmp ecx, esi
sete dl
jmp dword [edx*4 + 0x445428]
mov dword [esp + 0x14], eax
xor esi, esi
xor eax, eax
cmp esi, edi
setb al
jmp dword [eax*4 + 0x445430]
mov word [esp + 0x2c], 0xb2aa
mov byte [esp + 0x2e], 0xe
mov word [esp + 0x2f], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 4
ja 0x4104f3
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0x2c]
add eax, 0x3ea70be7
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x19
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 0x2c], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 5
jb 0x4104c0
push 3
lea eax, [esp + 0x30]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x4452c8]
mov word [esp + 0x98], 0xa839
lea eax, [esp + 0x9a]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x410581
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + ecx]
add edx, 0x997f1ffa
add eax, 0x997f1ffa
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x48]
add al, 0xad
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x410540
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x14], eax
mov word [esp + 0x98], 0x397
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x4105f4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0xf3a9fb9c
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x62
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x4105c0
push edi
push ebx
call fcn.004032c0
add esp, 8
mov dword [esp + 0x120], eax
mov word [esp + 0x98], 0xd98
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x410671
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + ecx]
add edx, 0xaa3056f7
add eax, 0xaa3056f7
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x48]
add al, 0xb
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x410630
push edi
push ebx
call fcn.004031f0
add esp, 8
mov dword [esp + 0x1c], eax
mov word [esp + 0x98], 0x43ec
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x4106e4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0xaf1d00f5
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x4b
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x4106b0
push edi
push ebx
call fcn.00403250
add esp, 8
mov word [esp + 0x98], 0x3c28
mov byte [esp + 0x9a], 0x40
mov word [esp + 0x9b], 0
fnstcw word [esp + 0x10a]
movzx eax, word [esp + 0x10a]
or eax, 0xc00
mov word [esp + 0x11a], ax
fldcw word [esp + 0x11a]
fistp dword [esp + 0x13c]
fldcw word [esp + 0x10a]
mov eax, dword [esp + 0x13c]
mov dword [esp + 0x24], eax
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x41079f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
mov edx, eax
and edx, 0x3473b3c4
xor eax, 0x3473b3c4
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x7a
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x410760
push edi
push ebx
call fcn.00403250
add esp, 8
mov word [esp + 0x98], 0xd7c8
mov byte [esp + 0x9a], 0xa0
mov word [esp + 0x9b], 0
fnstcw word [esp + 0x108]
movzx eax, word [esp + 0x108]
or eax, 0xc00
mov word [esp + 0x118], ax
fldcw word [esp + 0x118]
fistp dword [esp + 0x138]
fldcw word [esp + 0x108]
mov eax, dword [esp + 0x138]
mov dword [esp + 0x3c], eax
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x410844
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0x37b3be24
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x7a
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x410810
push edi
push ebx
call fcn.00403320
add esp, 8
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x14]
lea edi, [eax - 1]
nop
nop
nop
nop
cmp byte [edi + 1], 0
lea edi, [edi + 1]
jne 0x410860
xor ebx, ebx
cmp eax, edi
jae 0x4108ad
cmp byte [eax], 0
je 0x4108ad
xor ebx, ebx
mov esi, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push edi
push esi
call fcn.0040d570
add esp, 0xc
lea ecx, [esi + eax]
inc ebx
cmp ecx, edi
jae 0x4108ad
cmp byte [esi + eax], 0
mov esi, ecx
jne 0x410880
mov eax, ebx
xor eax, 1
mov ecx, ebx
and ecx, 1
lea esi, [eax + ecx*2]
lea eax, [esi + esi]
test esi, esi
jns 0x4108c6
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
lea ecx, [eax + esi*2]
add ecx, 0xfffffffe
mov esi, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], ecx
cmp eax, ecx
mov ecx, dword [esp + 0x14]
jae 0x41094f
mov esi, dword [esp + 0x34]
cmp ecx, edi
jae 0x41094f
mov esi, dword [esp + 0x34]
mov dword [esp + 0x20], ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx], 0
je 0x41094f
lea eax, [esp + 0x98]
push eax
push edi
push ecx
mov ebx, ecx
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov word [esi], cx
add esi, 2
cmp esi, dword [esp + 0x10]
jae 0x41094b
add ebx, eax
cmp ebx, edi
mov ecx, ebx
mov ebx, dword [esp + 0x20]
jb 0x410910
jmp 0x41094f
mov ebx, dword [esp + 0x20]
mov word [esi], 0
mov eax, esp
push eax
push 0
push 0
push ebx
mov edi, dword [esp + 0x44]
push edi
push 0
call dword [0x44a918]
mov esi, dword [esp]
lea eax, [esi + esi]
test esi, esi
jns 0x410978
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov ecx, eax
mov eax, esp
push eax
push esi
mov dword [esp + 0x30], ecx
push ecx
push ebx
push edi
push 0
call dword [0x44a918]
mov ebx, dword [esp + 0x1c]
mov eax, ebx
jmp dword [0x4452d0]
jmp dword [0x4452dc]
push edi
call fcn.00409630
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push edi
call fcn.00409630
add esp, 4
mov eax, ebx
jmp dword [0x4452e0]
mov esi, eax
inc eax
cmp byte [esi], 0
jne case.0x41050a.3
xor edi, edi
cmp esi, ebx
jbe 0x410a2d
cmp byte [ebx], 0
je 0x410a2d
xor edi, edi
mov ebx, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push esi
push ebx
call fcn.0040d570
add esp, 0xc
lea ecx, [ebx + eax]
inc edi
cmp ecx, esi
jae 0x410a2d
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x410a00
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x410a3b
mov eax, 0xffffffff
push eax
call fcn.00409620
add esp, 4
mov dword [esp + 0x98], 0
lea ecx, [eax + edi*2]
mov edi, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], ecx
cmp eax, ecx
mov ebx, dword [esp + 0x1c]
jae 0x410aa1
mov edi, dword [esp + 0x38]
cmp ebx, esi
jae 0x410aa1
mov edi, dword [esp + 0x38]
cmp byte [ebx], 0
je 0x410aa1
lea eax, [esp + 0x98]
push eax
push esi
push ebx
call fcn.0040d570
add esp, 0xc
movzx ecx, word [esp + 0x98]
mov word [edi], cx
add edi, 2
cmp edi, dword [esp + 0x10]
jae 0x410aa1
add ebx, eax
cmp ebx, esi
jb 0x410a70
mov word [edi], 0
lea edi, [esp + 0x98]
mov ecx, edi
push 1
call fcn.00409dc0
xor esi, esi
mov ebx, dword [esp + 0x120]
jmp 0x40f2e8
mov dword [esp], 0x2fbc
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
cmp eax, 3
ja case.0x40eb77.2
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
movzx ecx, byte [esp + ecx]
add eax, 0xdbbe5b53
xor eax, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add al, 0x85
mov ecx, dword [esp + 0x48]
mov byte [esp + ecx], al
inc dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 4
jb 0x411160
mov dword [esp], 0x2fbc
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
cmp eax, 3
ja 0x4111e7
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
movzx ecx, byte [esp + ecx]
add eax, 0xdbbe5b53
xor eax, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add al, 0x85
mov ecx, dword [esp + 0x48]
mov byte [esp + ecx], al
inc dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 4
jb 0x4111b0
jmp dword [0x44526c]
mov eax, esp
push eax
push ebx
call fcn.00403250
add esp, 8
fnstcw word [esp + 0x106]
movzx eax, word [esp + 0x106]
or eax, 0xc00
mov word [esp + 0x116], ax
fldcw word [esp + 0x116]
fistp dword [esp + 0x140]
fldcw word [esp + 0x106]
mov eax, dword [esp + 0x140]
xor ecx, ecx
cmp eax, 2
setl cl
jmp dword [ecx*4 + 0x445270]
xor ecx, ecx
cmp eax, 3
setl cl
jmp dword [ecx*4 + 0x445278]
sete al
movzx eax, al
jmp dword [eax*4 + 0x445280]
mov dword [esp + 0x18], 0x861a
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
cmp eax, 3
ja 0x4112d0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
movzx ecx, byte [esp + ecx + 0x18]
lea edx, [eax + ecx]
add edx, 0xe473c2b9
add eax, 0xe473c2b9
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add al, 0xc4
mov ecx, dword [esp + 0x48]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 4
jb 0x411280
push 2
lea eax, [esp + 0x1c]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445340]
mov word [esp + 0x98], 0x44b5
lea eax, [esp + 0x9a]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 4
ja 0x411366
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x98]
lea edx, [eax + ecx]
add eax, 0x86
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x1f55f786
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x2c]
add al, 0x3d
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x98], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 5
jb 0x411320
push 2
push edi
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445348]
mov dword [esp + 0x44], 0x2eb8
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x4113d3
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x44]
add eax, 0xec9d1e72
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xa3
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x44], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x4113a0
push 5
lea eax, [esp + 0x48]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445350]
mov word [esp + 0x48], 0x801b
lea eax, [esp + 0x4a]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 4
ja 0x41145e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x48]
mov edx, eax
and edx, 0x29aef314
xor eax, 0xa9aef314
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x6b
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x48], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 5
jb 0x411420
push 2
lea eax, [esp + 0x4c]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445358]
mov word [esp], 0xb653
mov dword [esp + 2], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 5
ja 0x4114d1
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx]
add eax, 0x4f8c7c7e
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0x37
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 6
jb 0x4114a0
push 3
lea eax, [esp + 4]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445360]
mov dword [esp + 0x110], 0x89ca0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x411560
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx edx, byte [esp + ecx + 0x110]
lea ecx, [eax + edx]
add ecx, 0x9906ed39
add eax, 0x9906ed39
and eax, edx
mov edx, ecx
not edx
and edx, eax
add edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xcd
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x110], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x411510
push 3
lea eax, [esp + 0x114]
push eax
push ebx
call fcn.00403470
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x445368]
mov word [esp + 0x98], 0xfa5e
mov dword [esp + 0x9a], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40f557
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x98]
add eax, 0x13388717
xor eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
add al, 0x1e
mov ecx, dword [esp]
mov byte [esp + ecx + 0x98], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x4115b0
jmp 0x40f557
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret