Function at 0x40ec46
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xcd8
mov ecx, dword [0x43b8b4]
mov dword [esp + 0xbc], 0x93d73bfe
mov dword [esp + 0xc0], 0
mov dword [esp + 0x1bc], 0
mov eax, dword [esp + 0x1bc]
cmp eax, 7
ja 0x40d40e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x1bc]
mov edx, dword [esp + 0x1bc]
movzx edx, byte [esp + edx + 0xbc]
add eax, 0x32da0a4
xor eax, edx
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
add al, 0xcc
mov edx, dword [esp + 0x1bc]
mov byte [esp + edx + 0xbc], al
inc dword [esp + 0x1bc]
mov eax, dword [esp + 0x1bc]
cmp eax, 8
jb 0x40d3c0
mov edx, dword [str.WpM2Co__SUSELL]
mov dword [esp + 0x2c8], 0xaafecec3
mov dword [esp + 0x2cc], 0xc2cbc4fe
mov dword [esp + 0x2d0], 0xc2f3f8f6
mov dword [esp + 0x2d4], 0xf2c3c2fb
mov dword [esp + 0x2d8], 0xc3b0f0fd
mov dword [esp + 0x2dc], 0x899dc9f3
mov dword [esp + 0x2e0], 0xeda8938e
mov dword [esp + 0x2e4], 0x4585e3ef
mov word [esp + 0x2e8], 0
mov byte [esp + 0x2ea], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 0x22
ja 0x40d4cf
nop
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x20]
movzx esi, byte [esp + esi + 0x2c8]
add eax, 0xf63aa117
xor eax, esi
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 0x1bc]
add al, 0x8d
mov esi, dword [esp + 0x20]
mov byte [esp + esi + 0x2c8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 0x23
jb 0x40d490
movzx ebx, byte [esp + 0x2c8]
lea eax, [esp + 0x1bc]
test bl, bl
je 0x40d4fb
lea esi, [esp + 0x2c9]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40d4f0
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40d51b
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 0x40d510
mov byte [eax], 0
movzx edx, byte [esp + 0xbc]
test dl, dl
je 0x40d54b
lea esi, [esp + 0xbd]
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 0x40d540
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40d56b
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 0x40d560
mov byte [eax], 0
mov dword [esp + 0x2c8], 0x33c531f3
mov dword [esp + 0x2cc], 0x3fc23dca
mov dword [esp + 0x2d0], 0x3bcc39d5
mov dword [esp + 0x2d4], 0xc7f3c538
mov dword [esp + 0x2d8], 0xc33bc11c
mov dword [esp + 0x2dc], 0xcf23cd3c
mov dword [esp + 0x2e0], 0xcbeac9f2
mov dword [esp + 0x2e4], 0xd726d535
mov dword [esp + 0x2e8], 0xd326d120
mov dword [esp + 0x2ec], 0xdf3ddd35
mov dword [esp + 0x2f0], 0xdb26d939
mov dword [esp + 0x2f4], 0xe711e50d
mov dword [esp + 0x2f8], 0xe3d5e116
mov dword [esp + 0x2fc], 0xefdbed14
mov dword [esp + 0x300], 0xeb15e917
mov dword [esp + 0x304], 0xf7c3f50b
mov dword [esp + 0x308], 0xf305f11e
mov dword [esp + 0x30c], 0xff0bfd0e
mov dword [esp + 0x310], 0xfb07f9cd
mov dword [esp + 0x314], 0x87728576
mov dword [esp + 0x318], 0x8374816d
mov dword [esp + 0x31c], 0x8f798d6f
mov dword [esp + 0x320], 0x8b678964
mov dword [esp + 0x324], 0x97839578
mov dword [esp + 0x328], 0x9392919a
mov dword [esp + 0x32c], 0
lea ecx, [esp + 0x1bc]
mov dword [esp + 0x20], 0
mov edx, dword [esp + 0x20]
cmp edx, 0x67
ja 0x40d6f1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x20]
movzx esi, byte [esp + esi + 0x2c8]
add edx, 0xec420374
xor edx, esi
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0xbc]
add dl, 0xbc
mov esi, dword [esp + 0x20]
mov byte [esp + esi + 0x2c8], dl
inc dword [esp + 0x20]
mov edx, dword [esp + 0x20]
cmp edx, 0x68
jb 0x40d6b0
sub eax, ecx
mov dword [esp + 0xbc], 0xf757f98b
mov dword [esp + 0xc0], 0xf34bf544
mov word [esp + 0xc4], 0xf1f0
mov dword [esp + 0xc6], 0
mov dword [esp + 0x260], 0
mov edx, dword [esp + 0x260]
cmp edx, 0xd
ja 0x40d796
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x260]
mov esi, dword [esp + 0x260]
movzx esi, byte [esp + esi + 0xbc]
lea edi, [edx + 0xd6]
add edx, esi
and edi, esi
add edi, edi
sub edx, edi
add edx, 0xa50eed6
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x20]
add dl, 0xd2
mov esi, dword [esp + 0x260]
mov byte [esp + esi + 0xbc], dl
inc dword [esp + 0x260]
mov edx, dword [esp + 0x260]
cmp edx, 0xe
jb 0x40d740
lea edx, [esp + 0xb4]
lea esi, [esp + 0xa4]
lea edi, [esp + 0x2c8]
lea ebx, [esp + 0xbc]
push edx
push esi
push eax
push ecx
push edi
push ebx
push 0x4409dc
call fcn.0040c120
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x43c284]
xor esi, esi
xor eax, eax
test esi, 0
sete al
jmp dword [eax*4 + 0x43c28c]
push 0x104
push edi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, dword [esp + 0xb4]
mov edi, dword [esp + 0xa4]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [edi + ecx - 1]
cmp edx, 0x3d
je 0x40d812
cmp edx, 0x2e
jne 0x40d813
dec eax
movzx ecx, byte [edi + ecx - 2]
cmp ecx, 0x3d
je 0x40d822
cmp ecx, 0x2e
jne 0x40d823
dec eax
push eax
call fcn.00409540
add esp, 4
mov esi, eax
push eax
push edi
call fcn.0042f7c0
add esp, 8
push dword [esp + 0xa4]
call fcn.004328b0
add esp, 4
xor eax, eax
test esi, esi
sete al
lea edi, [esp + 0x2c8]
jmp dword [eax*4 + 0x43c28c]
push esi
call fcn.004024c0
add esp, 4
mov dword [esp + 0x18], eax
jmp dword [0x43c294]
push esi
call fcn.00409550
add esp, 4
push dword [esp + 0x18]
call fcn.00402f50
add esp, 4
mov esi, eax
mov word [esp + 0x2c8], 0xacd6
mov byte [esp + 0x2ca], 0x42
mov word [esp + 0x2cb], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 4
ja 0x40d90c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
movzx ecx, byte [esp + ecx + 0x2c8]
lea edx, [eax + ecx]
add eax, 0x90
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x5c8cfc90
mov dword [esp + 0xbc], edx
mov eax, dword [esp + 0xbc]
add al, 0x30
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x2c8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 5
jb 0x40d8c0
push edi
push esi
call fcn.004030a0
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43c29c]
call fcn.0042e960
movzx eax, al
jmp dword [eax*4 + 0x43c2a4]
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
shr eax, 0x1f
jmp dword [eax*4 + 0x43c2ac]
push 0
push 0
push 0
push 3
push 0
push 0
push 0
push 0xffffffffffffffff
push 0
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
shr eax, 0x1f
jmp dword [eax*4 + 0x43c2b4]
mov dword [esp + 0x20], 0x8a3733
mov dword [esp + 0xbc], 0
mov eax, dword [esp + 0xbc]
cmp eax, 3
ja 0x40d9d8
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xbc]
movzx ecx, byte [esp + ecx + 0x20]
add eax, 0xd74b023
xor eax, ecx
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
add al, 0x51
mov ecx, dword [esp + 0xbc]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 0xbc]
mov eax, dword [esp + 0xbc]
cmp eax, 4
jb 0x40d990
lea eax, [esp + 0x20]
push eax
push esi
call fcn.004030a0
add esp, 8
mov dword [esp + 0xac], eax
mov word [esp + 0x2c8], 0x5041
mov byte [esp + 0x2ca], 0xca
mov dword [esp + 0x2cb], 0
mov byte [esp + 0x2cf], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 7
ja 0x40da7c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
movzx ecx, byte [esp + ecx + 0x2c8]
lea edx, [eax + ecx]
add eax, 0xd3
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x20b232d3
mov dword [esp + 0xbc], edx
mov eax, dword [esp + 0xbc]
add al, 0xe1
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x2c8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 8
jb 0x40da30
push edi
push esi
call fcn.004030a0
add esp, 8
xor ecx, ecx
test eax, eax
setg cl
mov dword [esp + 0xa8], ecx
push esi
call fcn.0040e6f0
add esp, 4
push dword [esp + 0x18]
call fcn.004034f0
add esp, 4
lea edi, [esp + 0x260]
mov ecx, edi
push 1
call fcn.00409d90
push edi
call fcn.0041ad30
add esp, 4
mov ecx, edi
call fcn.0040a6f0
lea edi, [esp + 0xc68]
mov ecx, edi
push 3
call fcn.00409d90
push edi
call fcn.0041b5d0
add esp, 4
mov ecx, edi
call fcn.0040a6f0
lea edi, [esp + 0xc00]
mov ecx, edi
push 1
call fcn.00409d90
push edi
call fcn.0041b870
add esp, 4
mov ecx, edi
call fcn.0040a6f0
lea edi, [esp + 0xb98]
mov ecx, edi
push 1
call fcn.00409d90
push edi
call fcn.0041d1b0
add esp, 4
push edi
call fcn.0041da60
add esp, 4
push edi
call fcn.0041de80
add esp, 4
mov ecx, edi
call fcn.0040a6f0
lea edi, [esp + 0xb30]
mov ecx, edi
push 1
call fcn.00409d90
push edi
call fcn.0041fb80
add esp, 4
mov ecx, edi
call fcn.0040a6f0
lea edi, [esp + 0xac8]
mov ecx, edi
push 1
call fcn.00409d90
push edi
call fcn.00423d60
add esp, 4
push edi
call fcn.0042a510
add esp, 4
mov eax, dword [esp + 0xa8]
jmp dword [eax*4 + 0x43c2bc]
push edi
call fcn.00421f20
add esp, 4
lea ecx, [esp + 0xac8]
call fcn.0040a6f0
lea eax, [esp + 0x23f]
push eax
call fcn.0042f290
add esp, 4
mov dword [esp + 0x20], 0xbab7a76a
mov word [esp + 0x24], 0x6cb4
mov byte [esp + 0x26], 0x52
mov word [esp + 0x27], 0
mov byte [esp + 0x29], 0
mov dword [esp + 0xbc], 0
mov eax, dword [esp + 0xbc]
cmp eax, 9
ja 0x40dc38
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xbc]
movzx ecx, byte [esp + ecx + 0x20]
add eax, 0x1afccf0d
xor eax, ecx
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
add al, 0xbf
mov ecx, dword [esp + 0xbc]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 0xbc]
mov eax, dword [esp + 0xbc]
cmp eax, 0xa
jb 0x40dbf0
mov eax, dword [0x43b8b4]
mov dword [esp + 8], 0x1416d2a
mov dword [esp + 0xc], 0
mov dword [esp + 0xbc], 0
mov ecx, dword [esp + 0xbc]
cmp ecx, 7
ja 0x40dcba
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xbc]
movzx edx, byte [esp + edx + 8]
add ecx, 0x8536f401
xor ecx, edx
mov dword [esp + 0x2c8], ecx
mov ecx, dword [esp + 0x2c8]
add cl, 0xfb
mov edx, dword [esp + 0xbc]
mov byte [esp + edx + 8], cl
inc dword [esp + 0xbc]
mov ecx, dword [esp + 0xbc]
cmp ecx, 8
jb 0x40dc70
mov ecx, dword [str.WpM2Co__SUSELL]
mov dword [esp + 0x2c8], 0x2daeee9
mov dword [esp + 0x2cc], 0xe0d6e8d7
mov dword [esp + 0x2d0], 0xd0d1e4dd
mov dword [esp + 0x2d4], 0xe11fdee5
mov dword [esp + 0x2d8], 0xf2281c32
mov dword [esp + 0x2dc], 0xe9e2efe8
mov dword [esp + 0x2e0], 0xfa12282c
mov byte [esp + 0x2e4], 0xb4
mov dword [esp + 0x2e5], 0
mov dword [esp + 0x2e8], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0x23
ja 0x40dd7c
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov edi, dword [esp]
movzx edi, byte [esp + edi + 0x2c8]
add edx, 0x4f9d8a72
xor edx, edi
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0xbc]
add dl, 0xc6
mov edi, dword [esp]
mov byte [esp + edi + 0x2c8], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x24
jb 0x40dd40
movzx edx, byte [esp + 0x2c8]
test dl, dl
je 0x40ddab
lea ebx, [esp + 0xbc]
lea edi, [esp + 0x2c9]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], dl
inc ebx
movzx edx, byte [edi]
inc edi
test dl, dl
jne 0x40dda0
mov byte [ebx], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40ddcb
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 0x40ddc0
mov byte [ebx], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40ddeb
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40dde0
mov byte [ebx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x40de0b
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 0x40de00
mov byte [ebx], 0
movzx eax, byte [esp + 0x20]
test al, al
je 0x40de2b
lea ecx, [esp + 0x21]
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40de20
mov byte [ebx], 0
movzx eax, byte [esp + 0x23f]
test al, al
je 0x40de5b
lea ecx, [esp + 0x240]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40de50
mov byte [ebx], 0
mov dword [esp + 0x2c8], 0x3ed01c3
mov dword [esp + 0x2cc], 0x7f205ea
mov dword [esp + 0x2d0], 0xbe409ed
mov dword [esp + 0x2d4], 0xf230df8
mov dword [esp + 0x2d8], 0x13eb11c4
mov dword [esp + 0x2dc], 0x17f315e4
mov dword [esp + 0x2e0], 0x1b3a1922
mov dword [esp + 0x2e4], 0x1fee1dfd
mov dword [esp + 0x2e8], 0x23ce21d0
mov dword [esp + 0x2ec], 0x27c525cd
mov dword [esp + 0x2f0], 0x2bde29c9
mov dword [esp + 0x2f4], 0x2fc12dc5
mov dword [esp + 0x2f8], 0x331d31de
mov dword [esp + 0x2fc], 0x371b35cc
mov dword [esp + 0x300], 0x3bcd39cf
mov dword [esp + 0x304], 0x3f133dcb
mov dword [esp + 0x308], 0xc32dc126
mov dword [esp + 0x30c], 0xc72bc536
mov dword [esp + 0x310], 0xcb3fc9e5
mov dword [esp + 0x314], 0xcf22cd3e
mov dword [esp + 0x318], 0xd33cd135
mov dword [esp + 0x31c], 0xd739d537
mov dword [esp + 0x320], 0xdb3fd93c
mov dword [esp + 0x324], 0xdfd3dd38
mov dword [esp + 0x328], 0xe3e2e1ea
mov word [esp + 0x32c], 0
lea eax, [esp + 0xbc]
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x65
ja 0x40dfdb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x2c8]
add ecx, 0x785476c0
xor ecx, edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
add cl, 0x40
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x2c8], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x66
jb 0x40dfa0
sub ebx, eax
mov dword [esp + 0x20], 0x73d37187
mov dword [esp + 0x24], 0x7fd77dcc
mov word [esp + 0x28], 0x7978
mov dword [esp + 0x2a], 0
mov byte [esp + 0x2e], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x40e057
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
lea edi, [ecx + edx]
add edi, 0x3b07b494
add ecx, 0x3b07b494
and ecx, edx
mov edx, edi
xor edx, ecx
add edx, ecx
not ecx
and ecx, edi
add ecx, ecx
sub ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x1c
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xf
jb case.default.0x40e086
lea ecx, [esp + 0xb0]
lea edx, [esp + 0xa0]
push ecx
push edx
push ebx
push eax
lea edi, [esp + 0x2d8]
push edi
lea eax, [esp + 0x34]
push eax
push 0x4409dc
call fcn.0040c120
add esp, 0x1c
movzx eax, al
jmp dword [eax*4 + 0x43c2c4]
xor ebx, ebx
xor eax, eax
test ebx, 0
setne al
jmp dword [eax*4 + 0x43c2cc]
push ebx
call fcn.004024c0
add esp, 4
mov dword [esp + 0x18], eax
jmp dword [0x43c2d4]
jmp dword [0x43c2e0]
push ebx
call fcn.00409550
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebx
call fcn.00409550
add esp, 4
jmp dword [0x43c2e4]
mov ebx, dword [esp + 0x18]
push ebx
call fcn.00411450
add esp, 4
push ebx
call fcn.004034f0
add esp, 4
jmp dword [0x43c2f0]
push dword [esp + 0x18]
call fcn.004034f0
add esp, 4
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0xa0]
lea eax, [ecx + ecx*2]
shr eax, 2
movzx edx, byte [edi + ecx - 1]
cmp edx, 0x3d
je 0x40e134
cmp edx, 0x2e
jne 0x40e135
dec eax
movzx ecx, byte [edi + ecx - 2]
cmp ecx, 0x3d
je 0x40e144
cmp ecx, 0x2e
jne 0x40e145
dec eax
push eax
call fcn.00409540
add esp, 4
mov ebx, eax
push eax
push edi
call fcn.0042f7c0
add esp, 8
push dword [esp + 0xa0]
call fcn.004328b0
add esp, 4
xor eax, eax
test ebx, ebx
setne al
lea edi, [esp + 0x2c8]
jmp dword [eax*4 + 0x43c2cc]
jmp dword [0x43c2f0]
mov dword [esp + 8], 0xc16f6568
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 3
ja 0x40e1d9
nop
nop
nop
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
movzx ecx, byte [esp + ecx + 8]
add eax, 0xc8af8f31
xor eax, ecx
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
add al, 0xb
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 4
jb 0x40e1a0
lea eax, [esp + 8]
push eax
push esi
call fcn.004030a0
add esp, 8
mov dword [esp + 8], 0xc16f6568
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 3
ja 0x40e239
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
movzx ecx, byte [esp + ecx + 8]
add eax, 0xc8af8f31
xor eax, ecx
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x2c8]
add al, 0xb
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 4
jb 0x40e200
lea ebx, [esp + 8]
push ebx
push esi
call fcn.004030a0
add esp, 8
jmp dword [0x43c2f4]
xor ecx, ecx
test eax, eax
setg cl
jmp dword [ecx*4 + 0x43c2fc]
lea ecx, [esp + 0x2c8]
push 1
call fcn.00409d90
mov eax, 0xffffffff
nop
nop
cmp byte [eax + 0x440ce5], 0
lea eax, [eax + 1]
jne 0x40e270
mov dword [esp + 0x20], 0x7e646848
mov dword [esp + 0x24], 0x757e3569
mov word [esp + 0x28], 0xf70
mov dword [esp + 0x2a], 0
mov word [esp + 0x2e], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xf
ja 0x40e2f0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0x3c222981
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x7b
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x10
jb 0x40e2c0
lea esi, [esp + 0x2c8]
mov ecx, esi
push eax
push 0x440ce4
lea eax, [esp + 0x28]
push eax
call fcn.00409fa0
mov ecx, esi
call fcn.0040a6f0
mov ecx, esi
call fcn.00409dd0
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp dword [0x43c30c]
xor eax, eax
cmp dword [esp + 0xac], 0
setg al
jmp dword [eax*4 + 0x43c314]
push 0
call fcn.00435ed0
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c31c]
mov dword [esp + 0x20], 0x29992b81
mov dword [esp + 0x24], 0x2d5c2f8c
mov dword [esp + 0x28], 0x318a3387
mov dword [esp + 0x2c], 0x3556379b
mov dword [esp + 0x30], 0x398f3b52
mov dword [esp + 0x34], 0x3d993f8c
mov dword [esp + 0x38], 0x1b6038a
mov dword [esp + 0x3c], 0x5770760
mov dword [esp + 0x40], 0x9a50bb7
mov dword [esp + 0x44], 0xd6e0fba
mov dword [esp + 0x48], 0x11a113a9
mov dword [esp + 0x4c], 0x156417b4
mov dword [esp + 0x50], 0x19a21bbf
mov dword [esp + 0x54], 0x1d7e1fb3
mov dword [esp + 0x58], 0x6113637a
mov dword [esp + 0x5c], 0x650667c5
mov dword [esp + 0x60], 0x69c56bd0
mov dword [esp + 0x64], 0x6dc56fdb
mov dword [esp + 0x68], 0x71c973dd
mov dword [esp + 0x6c], 0x751677c4
mov dword [esp + 0x70], 0x79ce7b05
mov dword [esp + 0x74], 0x7d0b7f18
mov dword [esp + 0x78], 0x4133431c
mov dword [esp + 0x7c], 0x45f747f2
mov dword [esp + 0x80], 0x49fc4be2
mov dword [esp + 0x84], 0x4de94fe3
mov dword [esp + 0x88], 0x513253e1
mov dword [esp + 0x8c], 0x5536573a
mov dword [esp + 0x90], 0x59f15bf0
mov dword [esp + 0x94], 0x5d3e5ff4
mov dword [esp + 0x98], 0xa1a2a33a
mov dword [esp + 0x9c], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x7f
ja 0x40e4be
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0x28ee7007
xor ecx, edx
mov dword [esp + 0x2c8], ecx
mov ecx, dword [esp + 0x2c8]
add cl, 0xdd
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x20], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x80
jb 0x40e480
movzx ecx, word [esp + 0x20]
test cx, cx
je 0x40e4f1
lea edi, [esp + 0x2c8]
lea edx, [esp + 0x22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x40e4e0
mov word [edi], 0
movzx ecx, word [eax]
test cx, cx
je 0x40e521
add eax, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x40e510
mov dword [edi], 0x220022
mov dword [edi + 4], 0x22
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 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], 0
mov dword [esp + 0x20], 0x44
mov dword [esp + 0x4c], 1
push 0xc9be8534
push dword [0x441ce4]
call fcn.00435ff0
add esp, 8
lea ecx, [esp + 0x2c8]
push ebx
lea edx, [esp + 0x24]
push edx
push 0
push 0
push 0x8000000
push 0
push 0
push 0
push ecx
push 0
call eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c324]
mov eax, dword [esp + 8]
mov dword [esp], 0x34353a3b
mov dword [esp + 4], 0
mov dword [esp + 0x1c], 0
mov ecx, dword [esp + 0x1c]
cmp ecx, 7
ja 0x40e655
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
movzx edx, byte [esp + edx]
add ecx, 0xa6a96676
xor ecx, edx
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0xb8]
add cl, 0xb2
mov edx, dword [esp + 0x1c]
mov byte [esp + edx], cl
inc dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
cmp ecx, 8
jb 0x40e61c
mov ecx, dword [0x441cf0]
test ecx, ecx
je case.0x40e177.18
mov edx, dword [esp]
xor esi, esi
mov edi, dword [0x441cf4]
cmp dword [edi + esi*8], 0x625b6034
je 0x40e67a
inc esi
cmp ecx, esi
jne 0x40e66a
jmp case.0x40e177.18
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je case.0x40e177.18
push eax
push 1
push dword [0x441cf8]
push ecx
call fcn.004347b0
add esp, 0x10
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [esp + 0xac8]
call fcn.00409dd0
lea ecx, [esp + 0xb30]
call fcn.00409dd0
lea ecx, [esp + 0xb98]
call fcn.00409dd0
lea ecx, [esp + 0xc00]
call fcn.00409dd0
lea ecx, [esp + 0xc68]
call fcn.00409dd0
lea ecx, [esp + 0x260]
call fcn.00409dd0
mov al, 1
jmp 0x40e109
push eax
push eax
mov eax, esp
mov word [eax], 0x41a3
mov dword [eax + 2], 0
mov word [eax + 6], 0
mov dword [esi], 0
mov ecx, dword [esi]
cmp ecx, 7
ja 0x40e757
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi]
mov edx, dword [esi]
movzx edx, byte [eax + edx]
add ecx, 0x6510a510
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0xb0
mov edx, dword [esi]
mov byte [eax + edx], cl
inc dword [esi]
mov ecx, dword [esi]
cmp ecx, 8
jb 0x40e730
push eax
push dword [ebp + 8]
call fcn.00402f70
add esp, 8
jmp case.0x40e177.24
push eax
push dword [ebp + 8]
call fcn.00402f70
add esp, 8
jmp dword [0x43c338]
push eax
push eax
mov eax, esp
sub esp, 8
mov ebx, esp
sub esp, 8
mov dword [esi + 0xe4], esp
sub esp, 8
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x158], esp
sub esp, 8
mov edi, esp
sub esp, 8
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x150], esp
sub esp, 8
mov dword [esi + 0xcc], esp
sub esp, 8
mov dword [esi + 0xc8], esp
push eax
mov dword [esi + 0x80], esp
sub esp, 8
mov dword [esi + 0x14c], esp
sub esp, 8
mov dword [esi + 0xc4], esp
push eax
mov dword [esi + 0x148], esp
push eax
mov dword [esi + 0xb0], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x68], ecx
mov esp, ecx
push eax
mov dword [esi + 0x15c], esp
sub esp, 8
mov dword [esi + 0xd8], esp
sub esp, 8
mov dword [esi + 0xd4], esp
sub esp, 8
mov dword [esi + 0xd0], esp
push eax
mov dword [esi + 0x7c], esp
sub esp, 8
mov dword [esi + 0x64], esp
sub esp, 8
mov dword [esi + 0xc0], esp
sub esp, 8
mov dword [esi + 0x144], esp
sub esp, 8
mov dword [esi + 0xbc], esp
sub esp, 8
mov dword [esi + 0x5c], esp
sub esp, 8
mov dword [esi + 0xb8], esp
sub esp, 8
mov dword [esi + 0xb4], esp
sub esp, 0xc
mov dword [esi + 0x40], esp
push eax
mov dword [esi + 0x74], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x78], ecx
mov esp, ecx
push eax
push eax
mov dword [esi + 0x6c], esp
sub esp, 8
mov dword [esi + 0x164], esp
sub esp, 8
mov dword [esi + 0xdc], esp
sub esp, 8
mov dword [esi + 0xec], esp
sub esp, 8
mov dword [esi + 0xf4], esp
sub esp, 8
mov dword [esi + 0x168], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x84], ecx
mov esp, ecx
push eax
sub esp, 8
mov dword [esi + 0x154], esp
sub esp, 8
mov dword [esi + 0x48], esp
sub esp, 0x4c
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x160], esp
sub esp, 8
mov dword [esi + 0x90], esp
sub esp, 8
mov dword [esi + 0x88], esp
sub esp, 8
mov dword [esi + 0xe8], esp
sub esp, 8
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0xf0], esp
sub esp, 0x68
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0xe0], ecx
mov esp, ecx
mov word [eax], 0x41a3
mov dword [eax + 2], 0
mov word [eax + 6], 0
mov dword [esi], 0
mov ecx, dword [esi]
cmp ecx, 7
ja 0x40e770
nop
mov ecx, dword [esi]
mov edx, dword [esi]
movzx edx, byte [eax + edx]
add ecx, 0x6510a510
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0xb0
mov edx, dword [esi]
mov byte [eax + edx], cl
inc dword [esi]
mov ecx, dword [esi]
cmp ecx, 8
jb 0x40e930
jmp 0x40e770
mov dword [esi + 0xac], edi
xor ecx, ecx
mov dword [esi + 0x70], eax
test eax, eax
sete cl
xor eax, eax
mov dword [esi + 0x34], ebx
jmp dword [ecx*4 + 0x43c33c]
mov eax, dword [esi + 0x48]
inc eax
mov dword [esi + 0x120], eax
mov eax, dword [esi + 0xb4]
add eax, 3
mov dword [esi + 0x108], eax
mov eax, dword [esi + 0xb8]
add eax, 2
mov dword [esi + 0x104], eax
mov eax, dword [esi + 0x5c]
add eax, 2
mov dword [esi + 0x100], eax
mov eax, dword [esi + 0xbc]
add eax, 2
mov dword [esi + 0xfc], eax
mov eax, dword [esi + 0xc0]
add eax, 2
mov dword [esi + 0xf8], eax
mov eax, dword [esi + 0x64]
add eax, 3
mov dword [esi + 0xa8], eax
mov eax, dword [esi + 0xd0]
add eax, 2
mov dword [esi + 0x118], eax
mov eax, dword [esi + 0xd4]
add eax, 2
mov dword [esi + 0x11c], eax
mov eax, dword [esi + 0xd8]
add eax, 2
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0xe8]
add eax, 3
mov dword [esi + 0x140], eax
mov eax, dword [esi + 0x90]
add eax, 2
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0xec]
add eax, 3
mov dword [esi + 0x13c], eax
mov eax, dword [esi + 0xdc]
add eax, 3
mov dword [esi + 0x128], eax
mov eax, dword [esi + 0x6c]
add eax, 2
mov dword [esi + 0x130], eax
mov eax, dword [esi + 0xc4]
add eax, 3
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0xc8]
add eax, 2
mov dword [esi + 0x110], eax
mov eax, dword [esi + 0xcc]
add eax, 2
mov dword [esi + 0x10c], eax
mov eax, dword [esi + 0x60]
add eax, 2
mov dword [esi + 0xa4], eax
mov eax, dword [esi + 0xe4]
add eax, 2
mov dword [esi + 0x138], eax
mov eax, dword [esi + 0x70]
xor edi, edi
jmp 0x40eaa6
inc edx
mov eax, dword [esi + 0x70]
mov edi, edx
push eax
call fcn.004034b0
add esp, 4
xor ecx, ecx
cmp edi, eax
setb cl
mov al, 1
jmp dword [ecx*4 + 0x43c344]
mov edx, edi
mov dword [esi + 0x30], edi
jmp dword [0x43c350]
push edx
push dword [esi + 0x70]
call fcn.004034c0
add esp, 8
mov word [ebx], 0xf96c
mov dword [ebx + 2], 0
mov dword [esi], 0
mov ecx, dword [esi]
cmp ecx, 5
ja 0x40eb17
nop
mov ecx, dword [esi]
mov edx, dword [esi]
movzx edx, byte [ebx + edx]
add ecx, 0x84bfc22a
xor ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
add cl, 0x2e
mov edx, dword [esi]
mov byte [ebx + edx], cl
inc dword [esi]
mov ecx, dword [esi]
cmp ecx, 6
jb 0x40eaf0
push 3
push ebx
push eax
call fcn.00403390
add esp, 0xc
mov edx, dword [esi + 0x30]
jmp case.0x40e177.33
push 3
push ebx
push edi
call fcn.00403390
add esp, 0xc
mov edx, dword [esi + 0x30]
jmp dword [0x43c354]
push edx
push dword [esi + 0x70]
call fcn.004034c0
add esp, 8
mov edi, eax
mov word [ebx], 0xf96c
mov dword [ebx + 2], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40eb30
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [ebx + ecx]
add eax, 0x84bfc22a
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x2e
mov ecx, dword [esi]
mov byte [ebx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40eb70
jmp 0x40eb30
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x43c35c]
mov edx, dword [esi + 0xe4]
mov word [edx], 0x31cc
mov eax, dword [esi + 0x138]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x40ec05
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x64ba9f74
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xbc
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x40ebe0
push edx
push edi
call fcn.00402e40
add esp, 8
fnstcw word [esi + 0x56]
movzx eax, word [esi + 0x56]
or eax, 0xc00
mov word [esi + 0x9e], ax
fldcw word [esi + 0x9e]
fistp dword [esi + 0x17c]
fldcw word [esi + 0x56]
mov eax, dword [esi + 0x17c]
xor ecx, ecx
cmp eax, 2
setl cl
jmp dword [ecx*4 + 0x43c374]
xor ecx, ecx
cmp eax, 3
setl cl
jmp dword [ecx*4 + 0x43c37c]
sete al
movzx eax, al
mov edx, dword [esi + 0x30]
jmp dword [eax*4 + 0x43c384]
mov edx, dword [esi + 0x15c]
mov dword [edx], 0xe147
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 3
ja 0x40eca5
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x43f551d8
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xc8
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 4
jb 0x40ec80
push 2
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c434]
mov edx, dword [esi + 0xd8]
mov word [edx], 0x61f0
mov eax, dword [esi + 0x124]
mov word [eax + 4], 0
mov dword [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 7
ja 0x40ed15
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xe94edc18
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x88
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 8
jb 0x40ecf0
push 2
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c43c]
mov edx, dword [esi + 0xd4]
mov word [edx], 0x2bb7
mov eax, dword [esi + 0x11c]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 6
ja 0x40ed92
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x9b8985b7
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
mov ecx, eax
xor ecx, 0x93
and eax, 0x6c
add eax, eax
sub eax, ecx
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 7
jb 0x40ed60
push 5
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c444]
mov edx, dword [esi + 0xd0]
mov word [edx], 0xcb4a
mov eax, dword [esi + 0x118]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 6
ja 0x40ee05
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x26730433
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
inc al
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 7
jb 0x40ede0
push 2
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c44c]
mov edx, dword [esi + 0x7c]
jmp dword [0x43c454]
jmp dword [0x43c370]
xor ecx, ecx
test eax, eax
setle cl
jmp dword [ecx*4 + 0x43c38c]
mov edx, dword [esi + 0x6c]
mov word [edx], 0x61f0
mov eax, dword [esi + 0x130]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x40eeb6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
mov edx, dword [esi + 0x6c]
movzx edx, byte [edx + ecx]
lea ecx, [eax + edx]
add eax, 0x18
and eax, edx
mov edx, dword [esi + 0x6c]
add eax, eax
sub ecx, eax
add ecx, 0x2e757618
mov dword [esi + 8], ecx
mov eax, dword [esi + 8]
add al, 0x88
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x40ee80
push edx
push edi
call fcn.00402d10
add esp, 8
mov dword [esi + 0x18], eax
mov edx, dword [esi + 0x164]
mov word [edx], 0x27ae
mov dword [edx + 2], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40ef15
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x158a92f9
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x23
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40eef0
push edx
push edi
call fcn.00402d10
add esp, 8
mov edi, dword [esi + 0x18]
test edi, edi
sete dl
mov dword [esi + 0x10], eax
test eax, eax
sete cl
or cl, dl
movzx eax, cl
mov edx, dword [esi + 0x30]
jmp dword [eax*4 + 0x43c514]
mov eax, edi
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
inc eax
cmp byte [edi], 0
jne 0x40ef50
mov dword [esi + 4], 0
cmp edi, ecx
jbe 0x40efa7
cmp byte [ecx], 0
je 0x40efa7
mov dword [esi + 4], 0
mov ebx, dword [esi + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push edi
push ebx
call fcn.0040d200
add esp, 0xc
inc dword [esi + 4]
lea ecx, [ebx + eax]
cmp ecx, edi
jae 0x40efa7
cmp byte [ebx + eax], 0
mov ebx, ecx
jne 0x40ef80
mov ebx, dword [esi + 4]
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x40efb8
mov eax, 0xffffffff
push eax
call fcn.00409540
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + ebx*2]
mov edx, eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], ecx
cmp eax, ecx
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 0x18]
jae 0x40f375
mov edx, dword [esi + 0x1c]
cmp ebx, edi
jae 0x40f375
mov edx, dword [esi + 0x1c]
nop
cmp byte [ebx], 0
je 0x40f375
lea eax, [esi + 8]
push eax
push edi
push ebx
mov dword [esi + 4], edx
call fcn.0040d200
mov edx, dword [esi + 4]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x14]
jae 0x40f372
add ebx, eax
cmp ebx, edi
mov eax, dword [esi + 0x10]
jb 0x40eff0
jmp 0x40f375
mov edx, dword [esi + 0x160]
mov dword [edx], 0x39c8
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 3
ja 0x40f075
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xbb39ff76
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xb2
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 4
jb 0x40f050
push edx
push edi
call fcn.00402d10
add esp, 8
mov dword [esi + 0x18], eax
mov edx, dword [esi + 0x90]
mov word [edx], 0x41da
mov eax, dword [esi + 0x134]
mov word [eax], 0
mov byte [eax + 2], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x40f0e4
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
lea edx, [eax + 0x10]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
mov edx, dword [esi + 0x90]
add eax, 0x5f03b510
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xb0
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x40f0b0
push edx
push edi
call fcn.00402d10
add esp, 8
mov edi, dword [esi + 0x18]
test edi, edi
sete dl
mov dword [esi + 0x10], eax
test eax, eax
sete cl
or cl, dl
movzx eax, cl
jmp dword [eax*4 + 0x43c57c]
mov eax, edi
mov ecx, edi
nop
nop
mov ebx, eax
inc eax
cmp byte [ebx], 0
jne 0x40f110
mov dword [esi + 4], 0
cmp ebx, ecx
jbe 0x40f167
cmp byte [ecx], 0
je 0x40f167
mov dword [esi + 4], 0
mov edi, dword [esi + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push ebx
push edi
call fcn.0040d200
add esp, 0xc
inc dword [esi + 4]
lea ecx, [edi + eax]
cmp ecx, ebx
jae 0x40f167
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40f140
mov edi, dword [esi + 4]
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x40f178
mov eax, 0xffffffff
push eax
call fcn.00409540
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + edi*2]
mov edx, eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x14], ecx
cmp eax, ecx
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 0x18]
jae 0x40fa39
mov edx, dword [esi + 0x20]
cmp edi, ebx
jae 0x40fa39
mov edx, dword [esi + 0x20]
nop
cmp byte [edi], 0
je 0x40fa39
lea eax, [esi + 8]
push eax
push ebx
push edi
mov dword [esi + 4], edx
call fcn.0040d200
mov edx, dword [esi + 4]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x14]
jae 0x40fa36
add edi, eax
cmp edi, ebx
mov eax, dword [esi + 0x10]
jb 0x40f1b0
jmp 0x40fa39
sete al
movzx eax, al
mov edx, dword [esi + 0x30]
jmp dword [eax*4 + 0x43c394]
mov edx, dword [esi + 0x8c]
mov word [edx], 0xc9b8
mov dword [edx + 2], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40f25e
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
mov edx, dword [esi + 0x8c]
movzx edx, byte [edx + ecx]
lea ecx, [eax + edx]
add eax, 0xce
and eax, edx
mov edx, dword [esi + 0x8c]
add eax, eax
sub ecx, eax
add ecx, 0x911fc6ce
mov dword [esi + 8], ecx
mov eax, dword [esi + 8]
add al, 0xfa
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40f220
push 2
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c39c]
mov edx, dword [esi + 0x158]
mov dword [edx], 0xc1ad
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 3
ja 0x40f2c5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xc05e48d0
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xf0
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 4
jb 0x40f2a0
push 5
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c3a4]
mov edx, dword [esi + 0xac]
mov word [edx], 0x39a6
mov dword [edx + 2], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40f338
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
lea edx, [eax + ecx]
add edx, 0xfd938bca
add eax, 0xfd938bca
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esi + 8], edx
mov edx, dword [esi + 0xac]
mov eax, dword [esi + 8]
add al, 0xe
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40f300
push 2
push edx
push edi
call fcn.00403390
add esp, 0xc
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c3ac]
mov edx, dword [esi + 0x60]
jmp dword [0x43c3b8]
mov eax, dword [case.0x40ec3f.4]
mov edx, dword [esi + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [esi + 0x10]
mov word [edx], 0
lea ebx, [eax - 1]
nop
nop
nop
cmp byte [ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x40f380
mov ecx, ebx
xor ebx, ebx
mov dword [esi + 4], ecx
cmp eax, ecx
jae 0x40f3c8
cmp byte [eax], 0
je 0x40f3c8
xor ebx, ebx
mov edi, dword [esi + 0x10]
nop
nop
mov dword [esi + 8], 0
lea eax, [esi + 8]
push eax
push dword [esi + 4]
push edi
call fcn.0040d200
add esp, 0xc
inc ebx
lea ecx, [edi + eax]
cmp ecx, dword [esi + 4]
jae 0x40f3c8
cmp byte [edi + eax], 0
mov edi, ecx
jne 0x40f3a0
mov eax, ebx
inc eax
lea eax, [ebx + ebx + 2]
jns 0x40f3d6
mov eax, 0xffffffff
push eax
call fcn.00409540
add esp, 4
mov dword [esi + 8], 0
lea ecx, [eax + ebx*2]
mov edx, eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x14], ecx
cmp eax, ecx
mov edi, dword [esi + 0x10]
mov ebx, dword [esi + 4]
jae 0x40f43e
mov edx, dword [esi + 0x24]
cmp edi, ebx
jae 0x40f43e
mov edx, dword [esi + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40f43e
lea eax, [esi + 8]
push eax
push ebx
push edi
mov dword [esi + 0x10], edx
call fcn.0040d200
mov edx, dword [esi + 0x10]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, dword [esi + 0x14]
jae 0x40f43e
add edi, eax
cmp edi, ebx
jb 0x40f410
mov word [edx], 0
mov edx, dword [esi + 0xdc]
mov word [edx], 0x739f
mov byte [edx + 2], 0xfa
mov eax, dword [esi + 0x128]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 7
ja 0x40f495
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xdbaff1ff
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 5
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 8
jb 0x40f470
push edx
push dword [ebp + 8]
call fcn.00402f70
add esp, 8
xor ecx, ecx
mov dword [esi + 0x2c], eax
test eax, eax
setne cl
mov dword [esi + 0x14], 0
xor ebx, ebx
jmp dword [ecx*4 + 0x43c51c]
mov edi, dword [esi + 0x84]
mov ecx, edi
push 2
call fcn.00409d90
push dword [esi + 0x14]
push ebx
push dword [esi + 0x24]
push dword [esi + 0x1c]
push edi
call fcn.00413a90
add esp, 0x14
mov ecx, edi
call fcn.0040a6f0
movzx eax, al
jmp dword [eax*4 + 0x43c53c]
mov dword [esi + 0x18], ebx
mov ebx, dword [esi + 0x34]
mov ecx, dword [esi + 0x154]
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x84]
mov eax, dword [eax + 4]
mov byte [ecx + 0xa], 0
cmp eax, 0x3ff
ja 0x40f803
lea edi, [ecx + 9]
mov byte [ecx + 9], 0x30
jmp 0x40f87a
push dword [esi + 0x2c]
call fcn.004034b0
add esp, 4
mov ecx, eax
mov dword [esi + 0x14], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov edi, 0xffffffff
add eax, 4
jb 0x40f54c
mov edi, eax
test dl, dl
jne 0x40f552
mov ecx, edi
push ecx
call fcn.00409540
add esp, 4
mov ebx, eax
mov ecx, dword [esi + 0x14]
mov dword [eax], ecx
add ebx, 4
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x43c524]
mov eax, dword [esi + 0x14]
lea eax, [eax + eax*2]
lea eax, [ebx + eax*4]
mov dword [ebx], 0
mov dword [ebx + 4], 0
mov byte [ebx + 8], 0
lea ecx, [ebx + 0xc]
xor edx, edx
cmp ecx, eax
sete dl
jmp dword [edx*4 + 0x43c52c]
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 + 0x43c52c]
xor edi, edi
xor eax, eax
cmp edi, dword [esi + 0x14]
setb al
mov dword [esi + 0x18], ebx
jmp dword [eax*4 + 0x43c534]
push edx
push ebx
call fcn.004030a0
add esp, 8
xor edx, edx
test eax, eax
setg dl
lea eax, [edi + edi*2]
mov ebx, dword [esi + 0x18]
lea ecx, [ebx + eax*4]
push edx
push dword [esi + 4]
push dword [esi + 0x10]
call fcn.00413550
inc edi
xor eax, eax
cmp edi, dword [esi + 0x14]
setb al
jmp dword [eax*4 + 0x43c534]
push edi
push dword [esi + 0x2c]
call fcn.004034c0
add esp, 8
mov ebx, eax
mov edx, dword [esi + 0xec]
mov word [edx], 0xfbe5
mov byte [edx + 2], 0x56
mov eax, dword [esi + 0x13c]
mov dword [eax], 0
mov byte [eax + 4], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 7
ja 0x40f675
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x3b89a0ee
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x5a
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 8
jb 0x40f650
push edx
push ebx
call fcn.00402d10
add esp, 8
mov dword [esi + 4], eax
mov edx, dword [esi + 0xf4]
mov word [edx], 0xf59f
mov byte [edx + 2], 0x7a
mov dword [edx + 3], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 6
ja 0x40f6e4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
lea edx, [eax + 0x3f]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
mov edx, dword [esi + 0xf4]
add eax, 0xa462a3f
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xc5
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 7
jb 0x40f6b0
push edx
push ebx
call fcn.00402d10
add esp, 8
mov dword [esi + 0x10], eax
mov edx, dword [esi + 0x168]
mov dword [edx], 0xd7b8a5bc
mov word [edx + 4], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40f5e0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xc9bb50ce
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xfa
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40f720
jmp 0x40f5e0
xor eax, eax
test ebx, ebx
sete al
mov edx, ebx
mov ebx, dword [esi + 0x34]
jmp dword [eax*4 + 0x43c544]
lea eax, [edx - 4]
mov dword [esi + 4], eax
mov eax, dword [edx - 4]
xor ecx, ecx
test eax, eax
lea eax, [eax + eax*2]
mov edi, edx
lea ebx, [edx + eax*4]
sete cl
jmp dword [ecx*4 + 0x43c54c]
lea edi, [ecx + 0xa]
mov ecx, eax
shr ecx, 0xa
cmp eax, 0x19000
jb 0x40f85e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + 0x439318]
mov word [edi - 2], ax
add edi, 0xfffffffe
cmp ecx, 0x270f
mov ecx, edx
ja 0x40f820
cmp edx, 9
ja 0x40f865
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [edi - 1], al
dec edi
jmp 0x40f874
mov edx, ecx
cmp edx, 9
jbe 0x40f851
movzx eax, word [edx + edx + 0x439318]
mov word [edi - 2], ax
add edi, 0xfffffffe
mov ebx, dword [esi + 0x34]
mov edx, dword [esi + 0x48]
mov dword [edx], 0x7348330b
mov word [edx + 4], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 5
ja 0x40f8c5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x4f46f0ec
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x64
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 6
jb 0x40f8a0
mov ecx, dword [esi + 0x4c]
mov dword [ecx], 0x73746861
mov dword [ecx + 4], 0x2d657171
mov dword [ecx + 8], 0x7d656c62
mov dword [ecx + 0xc], 0x692a6767
mov dword [ecx + 0x10], 0x7e6b3765
mov dword [ecx + 0x14], 0x70327f66
mov dword [ecx + 0x18], 0x6e6f6d74
mov dword [ecx + 0x1c], 0x56d6473
mov dword [ecx + 0x20], 0x544b4454
mov dword [ecx + 0x24], 0x51025f4f
mov dword [ecx + 0x28], 0x41520f5d
mov dword [ecx + 0x2c], 0x5a570b47
mov dword [ecx + 0x30], 0x43594946
mov dword [ecx + 0x34], 0x4c4e1304
mov dword [ecx + 0x38], 0x194a5c40
mov dword [ecx + 0x3c], 0x30575848
mov dword [ecx + 0x40], 0x3c663b2b
mov dword [ecx + 0x44], 0x772d392b
mov dword [ecx + 0x48], 0x4f6c
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 0x4b
ja 0x40f98e
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
mov edx, dword [esi + 0x4c]
movzx ecx, byte [edx + ecx]
add eax, 0x38756001
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xfb
mov ecx, dword [esi]
mov edx, dword [esi + 0x4c]
mov byte [edx + ecx], al
mov ecx, dword [esi + 0x4c]
inc dword [esi]
mov eax, dword [esi]
cmp eax, 0x4c
jb 0x40f960
lea eax, [0x440ce3]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [eax + 1], 0
lea eax, [eax + 1]
jne 0x40f9a0
movzx ecx, byte [ecx]
test cl, cl
mov edx, dword [esi + 0x48]
je 0x40f9d5
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax + edx], cl
mov ecx, dword [esi + 0x4c]
movzx ecx, byte [ecx + edx + 1]
inc edx
test cl, cl
jne 0x40f9c0
add eax, edx
mov edx, dword [esi + 0x48]
mov byte [eax], 0
movzx ecx, byte [edi]
test cl, cl
je 0x40f9eb
inc edi
mov byte [eax], cl
inc eax
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40f9e0
mov byte [eax], 0
movzx ecx, byte [edx]
test cl, cl
je 0x40fa0b
mov edx, dword [esi + 0x120]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40fa00
mov byte [eax], 0
xor eax, eax
mov edx, dword [esi + 0x18]
test edx, edx
sete al
jmp dword [eax*4 + 0x43c544]
jmp dword [0x43c55c]
mov eax, dword [esi + 0x10]
mov word [edx], 0
xor edi, edi
mov ebx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add ebx, 2
cmp byte [eax + edi], 0
lea edi, [edi + 1]
jne 0x40fa50
lea eax, [ebx + 2]
test edi, edi
jns 0x40fa68
mov eax, 0xffffffff
push eax
call fcn.00409540
add esp, 4
mov dword [esi + 8], 0
add ebx, eax
mov dword [esi + 4], eax
mov dword [esi + 0x3c], eax
cmp eax, ebx
mov edx, dword [esi + 0x88]
mov ecx, dword [esi + 0x10]
jae 0x40faf4
add edi, ecx
dec edi
mov eax, dword [esi + 0x3c]
mov dword [esi + 4], eax
cmp ecx, edi
jae 0x40faf4
mov eax, edi
mov eax, dword [esi + 0x3c]
mov dword [esi + 4], eax
mov eax, edi
mov dword [esi + 0x14], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx], 0
je 0x40faf4
mov edx, eax
lea eax, [esi + 8]
push eax
push edx
push ecx
mov edi, ecx
call fcn.0040d200
add esp, 0xc
movzx ecx, word [esi + 8]
mov edx, dword [esi + 4]
mov word [edx], cx
add edx, 2
mov dword [esi + 4], edx
cmp edx, ebx
jae 0x40faee
add edi, eax
mov eax, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x88]
mov ecx, edi
jb 0x40fab0
jmp 0x40faf4
mov edx, dword [esi + 0x88]
mov eax, dword [esi + 4]
mov word [eax], 0
mov word [edx], 0xe3ef
mov byte [edx + 2], 0x9a
mov word [edx + 3], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x40fb45
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0x20b1199b
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xf9
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x40fb20
push edx
push dword [ebp + 8]
call fcn.00402f70
add esp, 8
xor ecx, ecx
mov dword [esi + 0x28], eax
test eax, eax
setne cl
mov dword [esi + 0x1c], 0
mov dword [esi + 0x24], 0
mov ebx, dword [esi + 0x94]
jmp dword [ecx*4 + 0x43c594]
mov edi, dword [esi + 0xe0]
mov ecx, edi
push 3
call fcn.00409d90
push dword [esi + 0x24]
mov ebx, dword [esi + 0x1c]
push ebx
push dword [esi + 0x3c]
push dword [esi + 0x20]
push edi
call fcn.00415f90
add esp, 0x14
mov ecx, edi
call fcn.0040a6f0
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x43c5c4]
push dword [esi + 0x28]
call fcn.004034b0
add esp, 4
mov ecx, eax
mov dword [esi + 0x24], eax
mov ecx, 0xc
mul ecx
seto dl
mov ecx, 0xffffffff
mov edi, 0xffffffff
add eax, 4
jb 0x40fc41
mov edi, eax
test dl, dl
jne 0x40fc47
mov ecx, edi
push ecx
call fcn.00409540
add esp, 4
mov ecx, dword [esi + 0x24]
mov dword [eax], ecx
add eax, 4
mov dword [esi + 0x1c], eax
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x43c59c]
mov eax, dword [esi + 0x24]
lea eax, [eax + eax*2]
mov ecx, dword [esi + 0x1c]
lea eax, [ecx + eax*4]
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 + 0x43c5a4]
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 + 0x43c5a4]
xor edi, edi
xor eax, eax
cmp edi, dword [esi + 0x24]
setb al
jmp dword [eax*4 + 0x43c5ac]
mov dword [edx], 0x47a8
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 3
ja 0x410b85
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xb71bdc91
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x2b
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 4
jb 0x410b60
push 3
push edx
push edi
call fcn.00403390
mov edx, dword [esi + 0x7c]
add esp, 0xc
mov dword [edx], 0x47a8
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 3
ja 0x410bd5
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xb71bdc91
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0x2b
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 4
jb 0x410bb0
push 3
push edx
push edi
call fcn.00403390
mov edx, dword [esi + 0x7c]
add esp, 0xc
jmp dword [0x43c45c]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c464]
jmp case.0x40f271.0
mov edx, dword [esi + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp dword [0x43c614]
mov word [edx], 0x19bc
mov eax, dword [esi + 0xa4]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x4111a5
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xcfc03f3a
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xde
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x411180
push 3
push edx
push edi
call fcn.00403390
mov edx, dword [esi + 0x60]
add esp, 0xc
mov word [edx], 0x19bc
mov eax, dword [esi + 0xa4]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi], 0
mov eax, dword [esi]
cmp eax, 4
ja 0x411205
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov ecx, dword [esi]
movzx ecx, byte [edx + ecx]
add eax, 0xcfc03f3a
xor eax, ecx
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
add al, 0xde
mov ecx, dword [esi]
mov byte [edx + ecx], al
inc dword [esi]
mov eax, dword [esi]
cmp eax, 5
jb 0x4111e0
push 3
push edx
push edi
call fcn.00403390
mov edx, dword [esi + 0x60]
add esp, 0xc
jmp dword [0x43c3bc]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43c3c4]
mov ecx, dword [case.0x410b0e.97]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx