Function at 0x40e530
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x4b9dec]
sub esp, 0x1e8
push ebx
push ebp
xor ecx, ecx
push esi
push edi
cmp eax, ecx
jne 0x40e557
mov dword [esp + 0x1c], 0xc104
mov dword [esp + 0x10], 0xff0
jmp 0x40e583
cmp eax, 1
jne 0x40e573
mov ebx, 0xa0
mov dword [esp + 0x1c], 0xcf30
mov dword [esp + 0x10], 0xff0
jmp 0x40e588
mov dword [esp + 0x1c], 0xf700
mov dword [esp + 0x10], 0x1000
mov ebx, 0x98
add ebx, dword [0x4dea50]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov ebp, 0x4dee98
jmp 0x40e5a0
mov edi, dword [esp + 0x18]
add edi, dword [0x52bbcc]
add edi, ebx
cmp byte [ebp + 0x1a4], 0
je 0x40e5e8
lea eax, [esp + 0x10c]
mov ecx, ebp
call fcn.00438040
mov eax, dword [0x4b9dec]
lea edx, [esp + 0x20]
push edx
push eax
lea eax, [esp + 0x114]
call fcn.00437990
mov ecx, 0x3b
lea esi, [esp + 0x28]
add esp, 8
rep movsd dword es:[edi], dword [esi]
cmp word [ebp + 0xe], 0
je 0x40e5fb
inc dword [esp + 0x14]
add dword [esp + 0x18], 0xec
add ebp, 0x1a8
cmp ebp, 0x4df888
jl 0x40e5a0
mov edx, dword [esp + 0x14]
mov ecx, dword [0x52bbcc]
mov dword [ecx + ebx - 4], edx
mov eax, dword [0x4dea54]
mov edx, dword [esp + 0x10]
add dword [esp + 0x1c], eax
xor ebx, ebx
add edx, 0xfffff010
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ebx
mov ebp, 0x4df888
lea esp, [esp]
mov edi, dword [esp + 0x18]
mov eax, 0x88888889
mul ebx
mov esi, edx
shr esi, 4
imul edi, esi
add edi, dword [esp + 0x10]
add edi, ecx
add edi, dword [esp + 0x1c]
cmp byte [ebp + 0x1a4], 0
je 0x40e6d3
lea eax, [esp + 0x10c]
mov ecx, ebp
call fcn.00438040
mov ecx, dword [0x4b9dec]
lea eax, [esp + 0x20]
push eax
push ecx
lea eax, [esp + 0x114]
call fcn.00437990
add esp, 8
cmp dword [0x4b9dec], 2
jne 0x40e6c2
mov edx, dword [edi + 4]
xor edx, dword [esp + 0x24]
test edx, 0xffff0000
je 0x40e6c2
mov eax, dword [0x4dea54]
mov ecx, esi
mov edx, 1
shl edx, cl
mov ecx, dword [0x52bbcc]
or dword [eax + ecx + 0x21704], edx
mov ecx, 0x22
lea esi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x52bbcc]
add dword [esp + 0x10], 0x88
add ebp, 0x1a8
inc ebx
cmp ebp, 0x5176e8
jl 0x40e640
mov eax, dword [0x4dea54]
sub dword [esp + 0x1c], eax
mov eax, dword [0x4b9dec]
mov edi, dword [0x4dea50]
mov bl, byte [0x52bbe8]
mov esi, eax
imul esi, esi, 0xbc
mov edx, dword [esi + 0x4a5544]
add edx, ecx
mov dword [esp + 0x14], esi
mov byte [edx + edi], bl
cmp eax, 2
jne 0x40e745
cmp byte [0x52bbe8], 0
mov edx, dword [0x4dea50]
je 0x40e73d
or byte [ecx + edx + 0x10d1], 8
jmp 0x40e745
and byte [ecx + edx + 0x10d1], 0xf7
mov edx, dword [esi + 0x4a5548]
movzx ebx, byte [0x52bbe9]
mov edi, dword [0x4dea50]
add edx, ecx
mov byte [edx + edi], bl
mov edx, dword [esi + 0x4a554c]
movzx ebx, byte [0x52bbea]
mov edi, dword [0x4dea50]
add edx, ecx
mov byte [edx + edi], bl
cmp eax, 2
je 0x40e791
mov eax, dword [esi + 0x4a5550]
mov edx, dword [0x4dea50]
mov bl, byte [0x52bbeb]
add eax, ecx
mov byte [eax + edx], bl
add ecx, dword [0x4dea50]
xor edx, edx
mov dword [esp + 0x18], ecx
lea ecx, [ecx]
xor ebp, ebp
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [ebp + 1]
mov dword [esp + 0x10], 8
mov ecx, dword [edx*4 + 0x52a4a8]
test cl, 1
je 0x40e7c1
or ebp, eax
test cl, 2
je 0x40e7c8
or ebx, eax
test cl, 0x10
je 0x40e7d6
or edi, eax
test cl, 4
jne 0x40e7dd
jmp 0x40e7db
test cl, 8
je 0x40e7dd
or esi, eax
mov ecx, dword [edx*4 + 0x52a4ac]
rol eax, 1
test cl, 1
je 0x40e7ed
or ebp, eax
test cl, 2
je 0x40e7f4
or ebx, eax
test cl, 0x10
je 0x40e802
or edi, eax
test cl, 4
jne 0x40e809
jmp 0x40e807
test cl, 8
je 0x40e809
or esi, eax
mov ecx, dword [edx*4 + 0x52a4b0]
rol eax, 1
test cl, 1
je 0x40e819
or ebp, eax
test cl, 2
je 0x40e820
or ebx, eax
test cl, 0x10
je 0x40e82e
or edi, eax
test cl, 4
jne 0x40e835
jmp 0x40e833
test cl, 8
je 0x40e835
or esi, eax
mov ecx, dword [edx*4 + 0x52a4b4]
rol eax, 1
test cl, 1
je 0x40e845
or ebp, eax
test cl, 2
je 0x40e84c
or ebx, eax
test cl, 0x10
je 0x40e85a
or edi, eax
test cl, 4
jne 0x40e861
jmp 0x40e85f
test cl, 8
je 0x40e861
or esi, eax
rol eax, 1
add edx, 4
dec dword [esp + 0x10]
jne 0x40e7b3
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
mov ebx, dword [ecx + 0x4a5554]
mov ecx, dword [esp + 0x18]
mov eax, edx
shr eax, 5
add eax, eax
add eax, eax
add ebx, eax
mov dword [ebx + ecx - 4], ebp
mov ebx, dword [esp + 0x14]
mov ebx, dword [ebx + 0x4a5558]
mov ebp, dword [esp + 0x10]
add ecx, eax
mov dword [ecx + ebx - 4], ebp
mov ebx, dword [esp + 0x14]
mov ebp, dword [ebx + 0x4a555c]
mov ecx, dword [esp + 0x18]
add ebp, eax
mov dword [ecx + ebp - 4], edi
mov edi, dword [ebx + 0x4a5560]
add edi, eax
mov dword [edi + ecx - 4], esi
cmp edx, 0x1ed
jb 0x40e7a0
mov edi, dword [0x4b9dec]
test edi, edi
je 0x40e95a
mov esi, dword [esp + 0x14]
xor edx, edx
mov ebx, ecx
mov ecx, dword [edx*4 + 0x52a4a8]
xor eax, eax
test cl, 0x20
je 0x40e8f6
mov eax, 2
test cl, 0x40
je 0x40e8fe
or eax, 1
test cl, cl
jns 0x40e905
or eax, 4
test ecx, 0x100
je 0x40e910
or eax, 8
test ecx, 0x200
je 0x40e91b
or eax, 0x10
test ecx, 0x400
je 0x40e926
or eax, 0x20
mov ecx, dword [esi + 0x4a5564]
add ecx, edx
inc edx
mov byte [ecx + ebx], al
cmp edx, 0x1ed
jb 0x40e8e3
cmp edi, 2
jne 0x40ea59
mov al, byte [0x52a454]
test al, al
jne 0x40ea17
mov eax, 0xc3
jmp 0x40ea20
lea esi, [ecx + 0x1406]
mov edx, 0x4a54d4
mov edi, 7
lea ebx, [ebx]
mov ecx, dword [edx - 4]
mov ecx, dword [ecx*4 + 0x52a4a8]
xor eax, eax
test cl, 0x20
je 0x40e986
mov eax, 2
test cl, 0x40
je 0x40e98e
or eax, 1
test cl, cl
jns 0x40e995
or eax, 4
test ecx, 0x100
je 0x40e9a0
or eax, 8
test ecx, 0x200
je 0x40e9ab
or eax, 0x10
test ecx, 0x400
je 0x40e9b6
or eax, 0x20
mov byte [esi - 1], al
mov ecx, dword [edx]
mov ecx, dword [ecx*4 + 0x52a4a8]
xor eax, eax
test cl, 0x20
je 0x40e9ce
mov eax, 2
test cl, 0x40
je 0x40e9d6
or eax, 1
test cl, cl
jns 0x40e9dd
or eax, 4
test ecx, 0x100
je 0x40e9e8
or eax, 8
test ecx, 0x200
je 0x40e9f3
or eax, 0x10
test ecx, 0x400
je 0x40e9fe
or eax, 0x20
mov byte [esi], al
add edx, 8
add esi, 2
dec edi
jne 0x40e970
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
jmp 0x40ea59
movzx eax, al
dec eax
or eax, 0xc0
mov cl, byte [0x52a455]
test cl, cl
jne 0x40ea2f
or eax, 0xc
jmp 0x40ea3b
movzx edx, cl
lea ecx, [edx*4 - 4]
or eax, ecx
mov cl, byte [0x52a456]
test cl, cl
jne 0x40ea4a
or eax, 0x30
jmp 0x40ea53
movzx edx, cl
dec edx
shl edx, 4
or eax, edx
mov byte [ebx + 0x15f6], al
xor eax, eax
mov edx, 0xff
mov cl, byte [eax + 0x52a468]
test cl, cl
jne 0x40ea78
mov edi, dword [esi + 0x4a556c]
lea ecx, [eax + ebx]
mov byte [ecx + edi], dl
jmp 0x40ea86
mov ebp, dword [esi + 0x4a556c]
dec cl
lea edi, [eax + ebx]
mov byte [edi + ebp], cl
mov cl, byte [eax + 0x52a469]
test cl, cl
jne 0x40ea9f
mov edi, dword [esi + 0x4a556c]
lea ecx, [eax + ebx]
mov byte [ecx + edi + 1], dl
jmp 0x40eaae
mov ebp, dword [esi + 0x4a556c]
dec cl
lea edi, [eax + ebx]
mov byte [edi + ebp + 1], cl
mov cl, byte [eax + 0x52a46a]
test cl, cl
jne 0x40eac7
mov edi, dword [esi + 0x4a556c]
lea ecx, [eax + ebx]
mov byte [ecx + edi + 2], dl
jmp 0x40ead6
mov ebp, dword [esi + 0x4a556c]
dec cl
lea edi, [eax + ebx]
mov byte [edi + ebp + 2], cl
mov cl, byte [eax + 0x52a46b]
test cl, cl
jne 0x40eaef
mov edi, dword [esi + 0x4a556c]
lea ecx, [eax + ebx]
mov byte [ecx + edi + 3], dl
jmp 0x40eafe
mov ebp, dword [esi + 0x4a556c]
dec cl
lea edi, [eax + ebx]
mov byte [edi + ebp + 3], cl
add eax, 4
cmp eax, 0x1c
jb 0x40ea60
mov ecx, dword [0x52a3e8]
test cl, cl
je 0x40eb1a
movzx eax, cl
dec eax
jmp 0x40eb1f
mov eax, 0xf
test ch, ch
je 0x40eb2e
movzx ecx, ch
dec ecx
shl ecx, 4
or eax, ecx
jmp 0x40eb33
or eax, 0xf0
mov ecx, dword [esi + 0x4a5570]
mov byte [ebx + ecx], al
mov al, byte [0x52a3ea]
test al, al
je 0x40eb4b
movzx eax, al
dec eax
jmp 0x40eb50
mov eax, 0xf
mov cl, byte [0x52a3eb]
test cl, cl
je 0x40eb65
movzx ecx, cl
dec ecx
shl ecx, 4
or eax, ecx
jmp 0x40eb6a
or eax, 0xf0
mov ecx, dword [esi + 0x4a5574]
mov byte [ebx + ecx], al
mov al, byte [0x52a3f4]
test al, al
jne 0x40eb83
mov eax, 0xc3
jmp 0x40eb8c
movzx eax, al
dec eax
or eax, 0xc0
mov cl, byte [0x52a3f5]
test cl, cl
jne 0x40eb9b
or eax, 0xc
jmp 0x40eba7
movzx ecx, cl
lea ecx, [ecx*4 - 4]
or eax, ecx
mov cl, byte [0x52a3f6]
test cl, cl
jne 0x40ebb6
or eax, 0x30
jmp 0x40ebbf
movzx ecx, cl
dec ecx
shl ecx, 4
or eax, ecx
mov ecx, dword [esi + 0x4a5578]
mov byte [ebx + ecx], al
mov al, byte [0x52a3e4]
test al, al
jne 0x40ebd8
mov eax, 0xc3
jmp 0x40ebe1
movzx eax, al
dec eax
or eax, 0xc0
mov cl, byte [0x52a3e5]
test cl, cl
jne 0x40ebf0
or eax, 0xc
jmp 0x40ebfc
movzx ecx, cl
lea ecx, [ecx*4 - 4]
or eax, ecx
mov cl, byte [0x52a3e6]
test cl, cl
jne 0x40ec0b
or eax, 0x30
jmp 0x40ec14
movzx ecx, cl
dec ecx
shl ecx, 4
or eax, ecx
mov ecx, dword [esi + 0x4a557c]
mov byte [ebx + ecx], al
mov cx, word [0x52a3dc]
test cl, cl
je 0x40ec33
movzx eax, cl
dec eax
or eax, 0xfc
jmp 0x40ec35
mov eax, edx
test ch, ch
je 0x40ec3e
movzx ecx, ch
jmp 0x40ec41
movzx ecx, cl
lea ecx, [ecx + ecx - 2]
or eax, ecx
mov ecx, dword [esi + 0x4a5580]
mov byte [ebx + ecx], al
mov cx, word [0x52a498]
test cl, cl
je 0x40ec66
movzx eax, cl
dec eax
or eax, 0xfc
jmp 0x40ec68
mov eax, edx
test ch, ch
je 0x40ec71
movzx ecx, ch
jmp 0x40ec74
movzx ecx, cl
lea ecx, [ecx + ecx - 2]
or eax, ecx
cmp dword [0x4b9dec], 0
mov ecx, dword [esi + 0x4a5584]
mov byte [ebx + ecx], al
je 0x40ed99
mov al, byte [0x52aed4]
test al, al
jne 0x40eca0
mov eax, 0xfffc0007
jmp 0x40eca9
movzx eax, al
dec eax
or eax, 0xfffc0000
mov cl, byte [0x52aed5]
test cl, cl
jne 0x40ecb8
or eax, 0x38
jmp 0x40ecc4
movzx ecx, cl
lea ecx, [ecx*8 - 8]
or eax, ecx
mov cl, byte [0x52aed6]
test cl, cl
jne 0x40ecd5
or eax, 0x1c0
jmp 0x40ecde
movzx ecx, cl
dec ecx
shl ecx, 6
or eax, ecx
mov cl, byte [0x52aed7]
test cl, cl
jne 0x40ecef
or eax, 0xe00
jmp 0x40ecf8
movzx ecx, cl
dec ecx
shl ecx, 9
or eax, ecx
mov cl, byte [0x52aed8]
test cl, cl
jne 0x40ed09
or eax, 0x7000
jmp 0x40ed12
movzx ecx, cl
dec ecx
shl ecx, 0xc
or eax, ecx
mov cl, byte [0x52aed9]
test cl, cl
jne 0x40ed23
or eax, 0x38000
jmp 0x40ed2c
movzx ecx, cl
dec ecx
shl ecx, 0xf
or eax, ecx
mov ecx, dword [esi + 0x4a5588]
mov dword [ebx + ecx], eax
mov cx, word [0x52a488]
test cl, cl
je 0x40ed4b
movzx eax, cl
dec eax
or eax, 0xfc
jmp 0x40ed4d
mov eax, edx
test ch, ch
je 0x40ed56
movzx ecx, ch
jmp 0x40ed59
movzx ecx, cl
lea ecx, [ecx + ecx - 2]
or eax, ecx
mov ecx, dword [esi + 0x4a558c]
mov byte [ebx + ecx], al
mov cx, word [0x52a490]
test cl, cl
je 0x40ed7e
movzx eax, cl
dec eax
or eax, 0xfc
jmp 0x40ed80
mov eax, edx
movzx edx, ch
test ch, ch
jne 0x40ed8a
movzx edx, cl
lea ecx, [edx + edx - 2]
mov edx, dword [esi + 0x4a5590]
or eax, ecx
mov byte [ebx + edx], al
test byte [0x52a9c0], 1
je 0x40ede9
mov eax, dword [esi + 0x4a5594]
cmp byte [ebx + eax], 0
jne 0x40edf6
call dword [0x4571ac]
push eax
call fcn.00449ba3
add esp, 4
call fcn.00449bb5
mov esi, dword [0x4b9dec]
imul esi, esi, 0xbc
mov edi, eax
shl edi, 0x10
mov dword [esp + 0x14], esi
call fcn.00449bb5
mov ecx, dword [esi + 0x4a5594]
or eax, edi
mov dword [ebx + ecx], eax
jmp 0x40edf6
mov edx, dword [esi + 0x4a5594]
mov dword [ebx + edx], 0
mov eax, dword [esp + 0x14]
mov edi, dword [eax + 0x4a55a8]
mov ebx, dword [0x52bbcc]
mov esi, dword [0x52c424]
mov edx, dword [0x4b9de8]
add edi, ebx
add edi, dword [0x4dea50]
mov ecx, 0x3f
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor ebp, ebp
lea ecx, [ebx + 0xa7f0]
movsb byte es:[edi], byte [esi]
xor eax, eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], ecx
test edx, edx
jne 0x40ee7c
mov ecx, dword [eax*4 + 0x4dea04]
cmp word [ecx], dx
mov esi, dword [0x4dea50]
mov ecx, dword [esp + 0x18]
je 0x40ee67
mov dword [ecx + esi - 0x20], 0xedb88320
mov esi, dword [0x4dea50]
mov dword [ecx + esi], 0xedb88320
jmp 0x40ee7c
mov dword [ecx + esi - 0x20], 0
mov esi, dword [0x4dea50]
mov dword [ecx + esi], 0
cmp byte [eax + 0x4b9df0], 0
mov ecx, dword [eax*4 + 0x4dea04]
jne 0x40ee91
mov byte [ecx + 2], al
jmp 0x40ee95
mov byte [ecx + 2], 0
mov ecx, dword [esp + 0x14]
mov esi, dword [eax*4 + 0x4dea04]
lea edi, [ebx + ebp]
add edi, dword [0x4dea50]
add edi, dword [ecx + 0x4a55b0]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x14]
mov edi, dword [ecx + 0x4a55ac]
add edi, dword [esp + 0x10]
mov esi, dword [eax*4 + 0x4dea04]
add edi, ebx
add edi, dword [0x4dea50]
mov ecx, 0xd6
rep movsd dword es:[edi], dword [esi]
cmp byte [eax + 0x4b9df0], 0
je 0x40eefc
mov esi, dword [esp + 0x14]
mov esi, dword [esi + 0x4a55b0]
lea ecx, [ebx + ebp]
add ecx, dword [0x4dea50]
xor edi, edi
mov word [ecx + esi], di
add dword [esp + 0x18], 4
add dword [esp + 0x10], 0x358
inc eax
add ebp, 0x104
cmp eax, 3
jb 0x40ee36
test edx, edx
jne 0x40ef3b
mov eax, dword [0x4dea10]
movzx ecx, word [eax]
mov eax, dword [0x4dea50]
neg ecx
sbb ecx, ecx
and ecx, 0xedb88320
mov dword [ebx + eax + 0xa7dc], ecx
mov ecx, dword [0x4dea50]
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x4a55b0]
add ecx, ebx
lea edi, [ecx + esi + 0x30c]
mov esi, dword [0x4dea10]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
test edx, edx
jne 0x40ef85
mov ecx, dword [0x4dea14]
movzx ecx, word [ecx]
mov esi, dword [0x4dea50]
neg ecx
sbb ecx, ecx
and ecx, 0xedb88320
mov dword [ebx + esi + 0xa7e0], ecx
mov ecx, dword [0x4dea50]
mov esi, dword [eax + 0x4a55b0]
add ecx, ebx
lea edi, [ecx + esi + 0x410]
mov esi, dword [0x4dea14]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
test edx, edx
jne 0x40efcb
mov ecx, dword [0x4dea18]
movzx ecx, word [ecx]
mov esi, dword [0x4dea50]
neg ecx
sbb ecx, ecx
and ecx, 0xedb88320
mov dword [ebx + esi + 0xa7e4], ecx
mov ecx, dword [0x4dea50]
mov esi, dword [eax + 0x4a55b0]
add ecx, ebx
lea edi, [ecx + esi + 0x514]
mov esi, dword [0x4dea18]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
test edx, edx
jne 0x40f011
mov ecx, dword [0x4dea1c]
movzx ecx, word [ecx]
mov esi, dword [0x4dea50]
neg ecx
sbb ecx, ecx
and ecx, 0xedb88320
mov dword [ebx + esi + 0xa7e8], ecx
mov ecx, dword [0x4dea50]
mov esi, dword [eax + 0x4a55b0]
add ecx, ebx
lea edi, [ecx + esi + 0x618]
mov esi, dword [0x4dea1c]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
test edx, edx
jne 0x40f057
mov ecx, dword [0x4dea20]
movzx ecx, word [ecx]
mov esi, dword [0x4dea50]
neg ecx
sbb ecx, ecx
and ecx, 0xedb88320
mov dword [ebx + esi + 0xa7ec], ecx
mov ecx, dword [0x4dea50]
mov eax, dword [eax + 0x4a55b0]
mov esi, dword [0x4dea20]
add ecx, ebx
lea edi, [ecx + eax + 0x71c]
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
mov esi, edx
imul esi, esi, 0xbc
shl edx, 4
add edx, 0x4a4a38
add esi, 0x4a55b4
mov ebp, edx
xor edi, edi
movzx ecx, word [ebp]
mov eax, dword [esi]
mov edx, dword [edi + 0x4d3210]
add ecx, ecx
add ecx, ecx
push ecx
add eax, ebx
add eax, dword [0x4dea50]
push edx
push eax
call fcn.0044ab40
add edi, 4
add esp, 0xc
add ebp, 2
add esi, 4
cmp edi, 0x20
jb 0x40f094
cmp dword [0x4b9dec], 2
jne 0x40f24c
mov edx, dword [ebx + 0xf61c]
cmp edx, 0xffffffff
jae 0x40f121
xor ecx, ecx
add edx, 0xfffffff0
mov eax, 0xffff
je 0x40f11a
mov esi, dword [ebx + 0xf61c]
add esi, 0xfffffff0
movzx edx, byte [ecx + ebx]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx edi, bl
mov ebx, dword [esp + 0x10]
xor edx, edi
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f0f2
mov word [ebx + 0xf626], ax
mov edx, dword [ebx + 0x21a04]
cmp edx, 0xffffffff
jae 0x40f17f
xor ecx, ecx
add edx, 0xfffffff0
mov eax, 0xffff
je 0x40f178
mov esi, dword [ebx + 0x21a04]
mov edx, dword [esp + 0x1c]
add esi, 0xfffffff0
lea edi, [ebx + edx]
jmp 0x40f150
movzx edx, byte [edi + ecx]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx ebp, bl
mov ebx, dword [esp + 0x10]
xor edx, ebp
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f150
mov word [ebx + 0x21a0e], ax
cmp dword [0x4dea64], 0x800a4
ja 0x40f3e4
mov edx, dword [ebx + 0x4f61c]
cmp edx, 0xffffffff
jae 0x40f1e3
xor ecx, ecx
add edx, 0xfffffff0
mov eax, 0xffff
je 0x40f1dc
mov esi, dword [ebx + 0x4f61c]
add esi, 0xfffffff0
nop
movzx edx, byte [ebx + ecx + 0x40000]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx edi, bl
mov ebx, dword [esp + 0x10]
xor edx, edi
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f1b0
mov word [ebx + 0x4f626], ax
mov edx, dword [ebx + 0x61a04]
cmp edx, 0xffffffff
jae 0x40f3e4
xor ecx, ecx
add edx, 0xfffffff0
mov eax, 0xffff
je 0x40f23a
mov esi, dword [ebx + 0x61a04]
mov edx, dword [esp + 0x1c]
add esi, 0xfffffff0
lea edi, [ebx + edx + 0x40000]
movzx edx, byte [edi + ecx]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx ebp, bl
mov ebx, dword [esp + 0x10]
xor edx, ebp
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f212
pop edi
pop esi
pop ebp
mov word [ebx + 0x61a0e], ax
pop ebx
add esp, 0x1e8
ret
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x4a5518]
mov edx, dword [esi + ebx + 8]
add esi, ebx
cmp edx, 0xffffffff
jae 0x40f29f
xor ecx, ecx
add edx, 0xffffffec
mov eax, 0xffff
je 0x40f29b
mov edi, dword [esi + 8]
add edi, 0xffffffec
movzx edx, byte [ecx + ebx]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx ebp, bl
mov ebx, dword [esp + 0x10]
xor edx, ebp
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, edi
jb 0x40f273
mov word [esi + 0x12], ax
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x4a551c]
mov edx, dword [esi + ebx + 8]
add esi, ebx
cmp edx, 0xffffffff
jae 0x40f304
xor ecx, ecx
add edx, 0xffffffec
mov eax, 0xffff
je 0x40f300
mov edi, dword [esi + 8]
add edi, 0xffffffec
jmp 0x40f2d0
mov edx, dword [esp + 0x1c]
lea edx, [ebx + edx - 4]
movzx edx, byte [edx + ecx]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx ebp, bl
mov ebx, dword [esp + 0x10]
xor edx, ebp
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, edi
jb 0x40f2d0
mov word [esi + 0x12], ax
cmp dword [0x4dea64], 0x800a4
ja 0x40f3e4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x4a5518]
mov edx, dword [ebx + ecx + 0x40008]
lea edi, [ebx + ecx + 0x40000]
cmp edx, 0xffffffff
jae 0x40f380
xor ecx, ecx
add edx, 0xffffffec
mov eax, 0xffff
je 0x40f37c
mov esi, dword [edi + 8]
add esi, 0xffffffec
jmp 0x40f350
movzx edx, byte [ebx + ecx + 0x40000]
mov dword [esp + 0x10], ebx
mov ebx, eax
shr ebx, 8
movzx ebp, bl
mov ebx, dword [esp + 0x10]
xor edx, ebp
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f350
mov word [edi + 0x12], ax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x4a551c]
mov edx, dword [ecx + ebx + 0x40008]
lea ebp, [ecx + ebx + 0x40000]
cmp edx, 0xffffffff
jae 0x40f3e4
xor ecx, ecx
add edx, 0xffffffec
mov eax, 0xffff
je 0x40f3e0
mov esi, dword [ebp + 8]
mov edx, dword [esp + 0x1c]
add esi, 0xffffffec
lea edi, [ebx + edx + 0x3fffc]
lea ebx, [ebx]
movzx edx, byte [ecx + edi]
mov ebx, eax
shr ebx, 8
movzx ebx, bl
xor edx, ebx
movzx edx, word [edx*2 + 0x4a4ad8]
shl eax, 8
inc ecx
xor eax, edx
cmp ecx, esi
jb 0x40f3c0
mov word [ebp + 0x12], ax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1e8
ret