Function at 0x4071c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2a4
mov esi, ecx
test edx, edx
je 0x40767d
lea eax, [esi + 0x8f12]
push 0x90
push 8
push eax
call fcn.00408e40
add esp, 0xc
lea eax, [esi + 0x8fa2]
push 0x70
push 9
push eax
call fcn.00408e40
add esp, 0xc
mov dword [esi + 0x9012], 0x7070707
mov dword [esi + 0x9016], 0x7070707
mov dword [esi + 0x901a], 0x7070707
mov dword [esi + 0x901e], 0x7070707
mov dword [esi + 0x9022], 0x7070707
mov dword [esi + 0x9026], 0x7070707
mov dword [esi + 0x902e], 0x8080808
mov dword [esi + 0x902a], 0x8080808
mov dword [esi + 0x9032], 0x5050505
mov dword [esi + 0x9036], 0x5050505
mov dword [esi + 0x903a], 0x5050505
mov dword [esi + 0x903e], 0x5050505
mov dword [esi + 0x9042], 0x5050505
mov dword [esi + 0x9046], 0x5050505
mov dword [esi + 0x904a], 0x5050505
mov dword [esi + 0x904e], 0x5050505
lea eax, [esp + 0x164]
push 0x84
push 0
push eax
call fcn.00408e40
add esp, 0xc
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax + 0x8f12]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x8f13]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x8f14]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x8f15]
inc dword [esp + ecx*4 + 0x164]
add eax, 4
cmp eax, 0x120
jne 0x4072c0
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x168]
add eax, eax
mov dword [esp + 0x2c], eax
add eax, dword [esp + 0x16c]
add eax, eax
mov dword [esp + 0x30], eax
add eax, dword [esp + 0x170]
add eax, eax
mov dword [esp + 0x34], eax
add eax, dword [esp + 0x174]
add eax, eax
mov dword [esp + 0x38], eax
add eax, dword [esp + 0x178]
add eax, eax
mov dword [esp + 0x3c], eax
add eax, dword [esp + 0x17c]
add eax, eax
mov dword [esp + 0x40], eax
add eax, dword [esp + 0x180]
add eax, eax
mov dword [esp + 0x44], eax
add eax, dword [esp + 0x184]
add eax, eax
mov dword [esp + 0x48], eax
add eax, dword [esp + 0x188]
add eax, eax
mov dword [esp + 0x4c], eax
add eax, dword [esp + 0x18c]
add eax, eax
mov dword [esp + 0x50], eax
add eax, dword [esp + 0x190]
add eax, eax
mov dword [esp + 0x54], eax
add eax, dword [esp + 0x194]
add eax, eax
mov dword [esp + 0x58], eax
add eax, dword [esp + 0x198]
add eax, eax
mov dword [esp + 0x5c], eax
add eax, dword [esp + 0x19c]
add eax, eax
mov dword [esp + 0x60], eax
xor eax, eax
jmp 0x4073e4
mov word [esi + eax*2 + 0x8852], bx
inc eax
cmp eax, 0x120
je 0x40746e
movzx ecx, byte [esi + eax + 0x8f12]
test ecx, ecx
je 0x4073d8
mov edx, dword [esp + ecx*4 + 0x24]
mov dword [esp + 4], ecx
lea ecx, [edx + 1]
mov edi, dword [esp + 4]
mov dword [esp + edi*4 + 0x24], ecx
mov ecx, dword [esp + 4]
xor ebx, ebx
cmp cl, 1
je 0x407450
mov ebp, ecx
and ebp, 0xfffffffe
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
or ebx, 1
mov ecx, edx
xor ecx, 0x7ffffffe
and ecx, ebx
mov ebx, edx
shr ebx, 1
shl edi, 2
add ecx, ecx
or ecx, edi
mov edi, ebx
or edi, 1
xor ebx, 0xfffffffe
and ebx, edi
or ebx, ecx
shr edx, 2
mov edi, ebx
add ebp, 0xfffffffe
jne 0x407420
test byte [esp + 4], 1
je 0x4073d0
add ebx, ebx
mov ecx, edx
or ecx, 1
xor edx, 0xfffffffe
and edx, ecx
or ebx, edx
jmp 0x4073d0
push 0x84
push 0
lea eax, [esp + 0x16c]
push eax
call fcn.00408e40
add esp, 0xc
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax + 0x9032]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x9033]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x9034]
inc dword [esp + ecx*4 + 0x164]
movzx ecx, byte [esi + eax + 0x9035]
inc dword [esp + ecx*4 + 0x164]
add eax, 4
cmp eax, 0x20
jne 0x407490
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x168]
add eax, eax
mov dword [esp + 0x2c], eax
add eax, dword [esp + 0x16c]
add eax, eax
mov dword [esp + 0x30], eax
add eax, dword [esp + 0x170]
add eax, eax
mov dword [esp + 0x34], eax
add eax, dword [esp + 0x174]
add eax, eax
mov dword [esp + 0x38], eax
add eax, dword [esp + 0x178]
add eax, eax
mov dword [esp + 0x3c], eax
add eax, dword [esp + 0x17c]
add eax, eax
mov dword [esp + 0x40], eax
add eax, dword [esp + 0x180]
add eax, eax
mov dword [esp + 0x44], eax
add eax, dword [esp + 0x184]
add eax, eax
mov dword [esp + 0x48], eax
add eax, dword [esp + 0x188]
add eax, eax
mov dword [esp + 0x4c], eax
add eax, dword [esp + 0x18c]
add eax, eax
mov dword [esp + 0x50], eax
add eax, dword [esp + 0x190]
add eax, eax
mov dword [esp + 0x54], eax
add eax, dword [esp + 0x194]
add eax, eax
mov dword [esp + 0x58], eax
add eax, dword [esp + 0x198]
add eax, eax
mov dword [esp + 0x5c], eax
add eax, dword [esp + 0x19c]
add eax, eax
mov dword [esp + 0x60], eax
xor eax, eax
jmp 0x4075ae
mov word [esi + eax*2 + 0x8a92], di
inc eax
cmp eax, 0x20
je 0x40762a
movzx ebx, byte [esi + eax + 0x9032]
test ebx, ebx
je 0x4075a8
mov edx, dword [esp + ebx*4 + 0x24]
lea ecx, [edx + 1]
mov dword [esp + ebx*4 + 0x24], ecx
xor edi, edi
cmp bl, 1
mov dword [esp + 4], ebx
je 0x407610
and ebx, 0xfffffffe
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
or edi, 1
mov ecx, edx
xor ecx, 0x7ffffffe
and ecx, edi
mov edi, edx
shr edi, 1
shl ebp, 2
add ecx, ecx
or ecx, ebp
mov ebp, edi
or ebp, 1
xor edi, 0xfffffffe
and edi, ebp
or edi, ecx
shr edx, 2
mov ebp, edi
add ebx, 0xfffffffe
jne 0x4075e0
test byte [esp + 4], 1
je 0x4075a0
add edi, edi
mov ecx, edx
or ecx, 1
xor edx, 0xfffffffe
and edx, ecx
or edi, edx
jmp 0x4075a0
mov eax, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
bts ebx, eax
mov dword [esi + 0x48], ebx
add eax, 2
mov dword [esi + 0x44], eax
cmp eax, 8
jae 0x407665
jmp 0x40800b
shr ebx, 8
mov dword [esi + 0x48], ebx
add eax, 0xfffffff8
mov dword [esi + 0x44], eax
cmp eax, 7
jbe 0x40800b
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x407650
lea eax, [ecx + 1]
mov dword [esi + 0x30], eax
mov byte [ecx], bl
mov eax, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407650
mov word [esi + 0x8392], 1
mov ecx, esi
xor edx, edx
push 0
push 0xf
push 0x120
call fcn.004082e0
add esp, 0xc
mov ecx, esi
mov edx, 1
push 0
push 0xf
push 0x20
call fcn.004082e0
add esp, 0xc
mov edx, 0x11e
cmp byte [esi + 0x902f], 0
jne 0x407893
mov edx, 0x11d
cmp byte [esi + 0x902e], 0
jne 0x407893
mov edx, 0x11c
cmp byte [esi + 0x902d], 0
jne 0x407893
mov edx, 0x11b
cmp byte [esi + 0x902c], 0
jne 0x407893
mov edx, 0x11a
cmp byte [esi + 0x902b], 0
jne 0x407893
mov edx, 0x119
cmp byte [esi + 0x902a], 0
jne 0x407893
mov edx, 0x118
cmp byte [esi + 0x9029], 0
jne 0x407893
mov edx, 0x117
cmp byte [esi + 0x9028], 0
jne 0x407893
mov edx, 0x116
cmp byte [esi + 0x9027], 0
jne 0x407893
mov edx, 0x115
cmp byte [esi + 0x9026], 0
jne 0x407893
mov edx, 0x114
cmp byte [esi + 0x9025], 0
jne 0x407893
mov edx, 0x113
cmp byte [esi + 0x9024], 0
jne 0x407893
mov edx, 0x112
cmp byte [esi + 0x9023], 0
jne 0x407893
mov edx, 0x111
cmp byte [esi + 0x9022], 0
jne 0x407893
mov edx, 0x110
cmp byte [esi + 0x9021], 0
jne 0x407893
mov edx, 0x10f
cmp byte [esi + 0x9020], 0
jne 0x407893
mov edx, 0x10e
cmp byte [esi + 0x901f], 0
jne 0x407893
mov edx, 0x10d
cmp byte [esi + 0x901e], 0
jne 0x407893
mov edx, 0x10c
cmp byte [esi + 0x901d], 0
jne 0x407893
mov edx, 0x10b
cmp byte [esi + 0x901c], 0
jne 0x407893
mov edx, 0x10a
cmp byte [esi + 0x901b], 0
jne 0x407893
mov edx, 0x109
cmp byte [esi + 0x901a], 0
jne 0x407893
mov edx, 0x108
cmp byte [esi + 0x9019], 0
jne 0x407893
mov edx, 0x107
cmp byte [esi + 0x9018], 0
jne 0x407893
mov edx, 0x106
cmp byte [esi + 0x9017], 0
jne 0x407893
mov edx, 0x105
cmp byte [esi + 0x9016], 0
jne 0x407893
mov edx, 0x104
cmp byte [esi + 0x9015], 0
jne 0x407893
mov edx, 0x103
cmp byte [esi + 0x9014], 0
jne 0x407893
cmp byte [esi + 0x9013], 1
mov edx, 0x102
sbb edx, 0
lea eax, [esi + 0x8f12]
mov edi, 0x904f
mov ecx, 0x3c
cmp byte [esi + edi], 0
jne 0x4078cb
nop
nop
nop
nop
nop
nop
nop
cmp edi, 0x9033
je 0x4078d3
cmp byte [esi + edi - 1], 0
jne 0x4078da
add edi, 0xfffffffe
add ecx, 0xfffffffc
cmp byte [esi + edi], 0
je 0x4078b0
add edi, 0xffff6fcf
jmp 0x4078e0
mov edi, 1
jmp 0x4078e0
add edi, 0xffff6fce
lea ecx, [esp + 0x164]
push edx
push eax
push ecx
mov ebx, edx
call fcn.00408cf0
add esp, 0xc
lea eax, [esp + ebx]
add eax, 0x164
lea ecx, [esi + 0x9032]
push edi
push ecx
push eax
call fcn.00408cf0
add esp, 0xc
mov dword [esp + 0x1c], edi
mov dword [esi + 0x8612], 0
mov dword [esi + 0x8616], 0
mov dword [esi + 0x861a], 0
mov dword [esi + 0x861e], 0
mov dword [esi + 0x8622], 0
mov dword [esi + 0x8626], 0
mov dword [esi + 0x862a], 0
mov dword [esi + 0x862e], 0
mov dword [esi + 0x8632], 0
mov word [esi + 0x8636], 0
mov dword [esp + 0x18], ebx
add edi, ebx
mov dword [esp + 0x14], edi
je 0x407bb2
lea eax, [esi + 0x8612]
mov dword [esp + 0x20], eax
lea eax, [esi + 0x8636]
mov dword [esp + 0x10], eax
lea eax, [esi + 0x8634]
mov dword [esp + 0xc], eax
mov cl, 0xff
xor ebp, ebp
xor edx, edx
xor eax, eax
xor ebx, ebx
jmp 0x4079e7
inc word [esi + 0x8632]
mov byte [esp + edx + 0x24], 0x10
add al, 0xfd
mov byte [esp + edx + 0x25], al
add edx, 2
inc word [esi + ecx*2 + 0x8612]
lea eax, [edx + 1]
mov edi, ecx
mov byte [esp + edx + 0x24], cl
xor ebx, ebx
mov edx, eax
xor eax, eax
mov ecx, edi
inc ebp
cmp dword [esp + 0x14], ebp
je 0x407b92
mov byte [esp + 4], cl
movzx ecx, byte [esp + ebp + 0x164]
test ecx, ecx
je 0x407a40
test ebx, ebx
je 0x407b1a
cmp ebx, 2
ja 0x407a81
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
add word [eax], bx
lea eax, [esp + edx]
add eax, 0x24
push ebx
push 0
push eax
mov dword [esp + 0xc], edx
mov edi, ecx
call fcn.00408e40
mov eax, dword [esp + 0x14]
mov ecx, edi
mov edx, dword [esp + 0xc]
add esp, 0xc
add edx, ebx
jmp 0x407b1a
test eax, eax
je 0x407acd
cmp eax, 2
ja 0x407ab8
mov edi, eax
movzx eax, byte [esp + 4]
add word [esi + eax*2 + 0x8612], di
mov dword [esp + 8], ecx
lea ecx, [esp + edx]
add ecx, 0x24
push edi
push eax
push ecx
mov dword [esp + 0xc], edx
call fcn.00408e40
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
add esp, 0xc
add edx, edi
jmp 0x407acd
mov edi, eax
cmp ebx, 0xa
ja 0x407b02
mov eax, dword [esp + 0xc]
inc word [eax]
mov eax, edx
mov byte [esp + edx + 0x24], 0x11
mov dword [esp + 8], ecx
mov ecx, edx
and ecx, 1
xor eax, 1
lea edx, [eax + ecx*2]
add bl, 0xfd
lea eax, [eax + ecx*2]
inc eax
mov ecx, dword [esp + 8]
mov byte [esp + edx + 0x24], bl
mov edx, eax
jmp 0x407b18
inc word [esi + 0x8632]
mov byte [esp + edx + 0x24], 0x10
add al, 0xfd
mov byte [esp + edx + 0x25], al
add edx, 2
inc ebx
xor eax, eax
cmp ebx, 0x8a
jne 0x4079dc
mov edi, ecx
mov eax, dword [esp + 0x10]
inc word [eax]
mov eax, edx
mov byte [esp + edx + 0x24], 0x12
mov ecx, edx
and ecx, 1
xor eax, 1
lea edx, [eax + ecx*2]
lea eax, [eax + ecx*2]
inc eax
mov cl, 0x7f
jmp 0x4079d0
mov eax, dword [esp + 0x10]
inc word [eax]
mov byte [esp + edx + 0x24], 0x12
add bl, 0xf5
mov byte [esp + edx + 0x25], bl
add edx, 2
mov eax, edi
movzx ebx, byte [esp + 4]
cmp cl, bl
jne 0x407b50
inc eax
xor ebx, ebx
cmp eax, 6
jne 0x4079dc
mov edi, ecx
inc word [esi + 0x8632]
mov byte [esp + edx + 0x24], 0x10
mov eax, edx
inc edx
add eax, 2
mov cl, 3
jmp 0x4079d0
test eax, eax
je 0x4079c3
cmp eax, 2
ja 0x4079ae
mov edi, eax
movzx eax, bl
add word [esi + eax*2 + 0x8612], di
mov dword [esp + 8], ecx
lea ecx, [esp + edx]
add ecx, 0x24
push edi
push eax
push ecx
mov ebx, edx
call fcn.00408e40
mov ecx, dword [esp + 0x14]
mov edx, ebx
add esp, 0xc
add edx, edi
jmp 0x4079c3
test eax, eax
je 0x407bbb
cmp eax, 2
ja 0x407be6
add word [esi + ecx*2 + 0x8612], ax
mov ebx, eax
lea eax, [esp + edx]
add eax, 0x24
movzx ecx, cl
push ebx
push ecx
jmp 0x407bd4
mov dword [esp], 0
jmp 0x407c37
test ebx, ebx
je 0x407c34
cmp ebx, 2
ja 0x407c07
mov eax, dword [esp + 0x20]
add word [eax], bx
lea eax, [esp + edx]
add eax, 0x24
push ebx
push 0
push eax
mov edi, edx
call fcn.00408e40
add esp, 0xc
add edi, ebx
mov dword [esp], edi
jmp 0x407c37
inc word [esi + 0x8632]
mov byte [esp + edx + 0x24], 0x10
mov ecx, eax
xor eax, 0xfc
and ecx, 0x7c
lea eax, [eax + ecx*2]
inc al
mov byte [esp + edx + 0x25], al
jmp 0x407c31
cmp ebx, 0xb
setb al
jb 0x407c17
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
mov cl, 0x12
sub cl, al
shl al, 3
add al, bl
mov edi, dword [esp + 0xc]
inc word [edi]
mov byte [esp + edx + 0x24], cl
add al, 0xf5
mov byte [esp + edx + 0x25], al
add edx, 2
mov dword [esp], edx
mov ebx, 2
mov ecx, esi
mov edx, 2
push 0
push 7
push 0x13
call fcn.004082e0
add esp, 0xc
mov ecx, dword [esi + 0x44]
shl ebx, cl
or ebx, dword [esi + 0x48]
mov dword [esi + 0x48], ebx
mov eax, ecx
and eax, 2
xor ecx, 2
lea ecx, [ecx + eax*2]
mov dword [esi + 0x44], ecx
cmp ecx, 8
jb 0x407ca9
mov edx, dword [esp + 0x18]
jmp 0x407c91
shr ebx, 8
mov dword [esi + 0x48], ebx
add ecx, 0xfffffff8
mov dword [esi + 0x44], ecx
cmp ecx, 7
jbe 0x407cad
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x407c80
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], bl
mov ecx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407c80
mov edx, dword [esp + 0x18]
add edx, 0xfffffeff
shl edx, cl
or edx, ebx
mov dword [esi + 0x48], edx
lea eax, [ecx + 5]
mov dword [esi + 0x44], eax
cmp ecx, 3
jb 0x407d02
mov ebx, dword [esp + 0x1c]
jmp 0x407cea
shr edx, 8
mov dword [esi + 0x48], edx
mov ecx, eax
xor ecx, 0xfffffff7
and eax, 0xfffffff7
lea eax, [ecx + eax*2]
inc eax
mov dword [esi + 0x44], eax
cmp eax, 7
jbe 0x407d06
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x407cd0
lea eax, [ecx + 1]
mov dword [esi + 0x30], eax
mov byte [ecx], dl
mov eax, dword [esi + 0x44]
mov edx, dword [esi + 0x48]
jmp 0x407cd0
mov ebx, dword [esp + 0x1c]
dec ebx
mov ecx, eax
shl ebx, cl
or ebx, edx
mov dword [esi + 0x48], ebx
lea ecx, [eax + 5]
mov dword [esi + 0x44], ecx
cmp eax, 3
jae 0x407ea5
mov edx, 0x13
cmp byte [esi + 0x9161], 0
jne 0x407e06
mov edx, 0x12
cmp byte [esi + 0x9153], 0
jne 0x407e06
mov edx, 0x11
cmp byte [esi + 0x9160], 0
jne 0x407e06
mov edx, 0x10
cmp byte [esi + 0x9154], 0
jne 0x407e06
mov edx, 0xf
cmp byte [esi + 0x915f], 0
jne 0x407e06
mov edx, 0xe
cmp byte [esi + 0x9155], 0
jne 0x407e06
mov edx, 0xd
cmp byte [esi + 0x915e], 0
jne 0x407e06
mov edx, 0xc
cmp byte [esi + 0x9156], 0
jne 0x407e06
mov edx, 0xb
cmp byte [esi + 0x915d], 0
jne 0x407e06
mov edx, 0xa
cmp byte [esi + 0x9157], 0
jne 0x407e06
mov edx, 9
cmp byte [esi + 0x915c], 0
jne 0x407e06
mov edx, 8
cmp byte [esi + 0x9158], 0
jne 0x407e06
mov edx, 7
cmp byte [esi + 0x915b], 0
jne 0x407e06
mov edx, 6
cmp byte [esi + 0x9159], 0
jne 0x407e06
xor edx, edx
cmp byte [esi + 0x915a], 0
sete dl
xor edx, 5
lea eax, [edx - 4]
shl eax, cl
or eax, ebx
mov ebx, eax
mov dword [esi + 0x48], eax
lea eax, [ecx + 4]
mov dword [esi + 0x44], eax
cmp ecx, 4
jae 0x407ede
xor ebp, ebp
jmp 0x407e39
inc ebp
cmp ebp, edx
je 0x407ef6
mov ecx, eax
mov eax, ebx
movzx edi, byte [ebp + 0x43dff6]
movzx ebx, byte [esi + edi + 0x9152]
shl ebx, cl
or ebx, eax
mov dword [esi + 0x48], ebx
lea eax, [ecx + 3]
mov dword [esi + 0x44], eax
cmp ecx, 5
jae 0x407e71
jmp 0x407e30
shr ebx, 8
mov dword [esi + 0x48], ebx
add eax, 0xfffffff8
mov dword [esi + 0x44], eax
cmp eax, 7
jbe 0x407e30
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x407e60
lea eax, [ecx + 1]
mov dword [esi + 0x30], eax
mov byte [ecx], bl
mov eax, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407e60
shr ebx, 8
mov dword [esi + 0x48], ebx
add ecx, 0xfffffff8
mov dword [esi + 0x44], ecx
cmp ecx, 7
jbe 0x407d1f
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x407e90
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], bl
mov ecx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407e90
shr ebx, 8
mov dword [esi + 0x48], ebx
mov ecx, eax
xor ecx, 0xfffffff7
and eax, 0xfffffff7
lea eax, [ecx + eax*2]
inc eax
mov dword [esi + 0x44], eax
cmp eax, 7
jbe 0x407e21
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x407ec0
lea eax, [ecx + 1]
mov dword [esi + 0x30], eax
mov byte [ecx], bl
mov eax, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407ec0
cmp dword [esp], 0
je 0x40800b
xor ebp, ebp
jmp 0x407f1b
mov eax, edx
cmp ebp, dword [esp]
jae 0x40800b
mov ecx, eax
mov edi, ebx
movzx edx, byte [esp + ebp + 0x24]
movzx ebx, word [esi + edx*2 + 0x8cd2]
movzx eax, byte [esi + edx + 0x9152]
add eax, ecx
shl ebx, cl
or ebx, edi
mov dword [esi + 0x48], ebx
mov dword [esi + 0x44], eax
cmp eax, 8
jae 0x407faa
inc ebp
cmp dl, 0x10
jb 0x407f12
mov ecx, ebp
and ecx, 1
mov edi, ebp
xor edi, 1
lea ecx, [edi + ecx*2]
mov dword [esp + 4], ecx
mov edi, ebx
movzx ebx, byte [esp + ebp + 0x24]
mov ecx, edx
or ecx, 0xffffffef
and edx, 0xffffffef
movsx edx, byte [ecx + edx + 0x43f6e9]
mov ecx, eax
shl ebx, cl
or ebx, edi
mov dword [esi + 0x48], ebx
add edx, eax
mov dword [esi + 0x44], edx
cmp edx, 8
jb 0x408000
mov ebp, dword [esp + 4]
jmp 0x407fe5
shr ebx, 8
mov dword [esi + 0x48], ebx
mov ecx, eax
xor ecx, 0xfffffff7
and eax, 0xfffffff7
lea eax, [ecx + eax*2]
inc eax
mov dword [esi + 0x44], eax
cmp eax, 7
jbe 0x407f45
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x407f90
lea eax, [ecx + 1]
mov dword [esi + 0x30], eax
mov byte [ecx], bl
mov eax, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407f90
shr ebx, 8
mov dword [esi + 0x48], ebx
add edx, 0xfffffff8
mov dword [esi + 0x44], edx
cmp edx, 7
jbe 0x407f10
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x407fd0
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], bl
mov edx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x407fd0
mov eax, edx
mov ebp, dword [esp + 4]
jmp 0x407f12
lea ebp, [esi + 0x9272]
cmp ebp, dword [esi + 0x28]
jae 0x40826d
mov ecx, 1
jmp 0x408044
mov ebp, dword [esp]
mov ecx, dword [esp + 4]
shr ecx, 1
mov eax, edx
cmp ebp, dword [esi + 0x28]
jae 0x40826f
cmp ecx, 1
jne 0x408054
movzx ecx, byte [ebp]
inc ebp
or ecx, 0x100
mov dword [esp + 4], ecx
test cl, 1
jne 0x4080c0
movzx ecx, byte [ebp]
inc ebp
movzx edi, word [esi + ecx*2 + 0x8852]
movzx edx, byte [esi + ecx + 0x8f12]
mov ecx, eax
shl edi, cl
or ebx, edi
mov dword [esi + 0x48], ebx
add edx, eax
mov dword [esi + 0x44], edx
cmp edx, 8
jae 0x4080a1
jmp 0x408033
shr ebx, 8
mov dword [esi + 0x48], ebx
add edx, 0xfffffff8
mov dword [esi + 0x44], edx
cmp edx, 7
jbe 0x408033
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x408090
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], bl
mov edx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x408090
movzx edx, byte [ebp]
movzx ecx, word [edx + edx + 0x43ddf6]
mov dword [esp], ecx
mov edi, ebp
movzx ebp, word [esi + ecx*2 + 0x8852]
mov ecx, eax
shl ebp, cl
mov ecx, ebx
xor ebx, ebp
not ebp
and ebp, ecx
add ebx, ecx
mov ecx, dword [esp]
movzx ecx, byte [esi + ecx + 0x8f12]
add ecx, eax
movzx eax, byte [edi + 1]
mov dword [esp], edi
movzx edi, byte [edi + 2]
sub ebx, ebp
mov dword [esp + 0x14], edi
mov ebp, edi
shl ebp, 8
mov dword [esi + 0x48], ebx
mov dword [esi + 0x44], ecx
cmp ecx, 8
jae 0x408161
or ebp, eax
movzx eax, byte [edx + 0x43e050]
and edx, dword [eax*4 + 0x43e00c]
shl edx, cl
or edx, ebx
mov dword [esi + 0x48], edx
add ecx, eax
mov dword [esi + 0x44], ecx
cmp ecx, 8
jae 0x408191
cmp ebp, 0x200
jb 0x4081b0
mov edi, dword [esp + 0x14]
lea eax, [edi + 0x43dd76]
lea ebx, [edi + 0x43e350]
jmp 0x4081bc
shr ebx, 8
mov dword [esi + 0x48], ebx
add ecx, 0xfffffff8
mov dword [esi + 0x44], ecx
cmp ecx, 7
jbe 0x408115
mov edi, dword [esi + 0x30]
cmp edi, dword [esi + 0x34]
jae 0x408150
lea ecx, [edi + 1]
mov dword [esi + 0x30], ecx
mov byte [edi], bl
mov ecx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x408150
shr edx, 8
mov dword [esi + 0x48], edx
add ecx, 0xfffffff8
mov dword [esi + 0x44], ecx
cmp ecx, 7
jbe 0x408136
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x408180
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], dl
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x48]
jmp 0x408180
lea eax, [ebp + 0x43db76]
lea ebx, [ebp + 0x43e150]
movzx edi, byte [eax]
movzx eax, word [esi + edi*2 + 0x8a92]
shl eax, cl
or eax, edx
movzx edx, byte [esi + edi + 0x9032]
add edx, ecx
movzx ebx, byte [ebx]
mov dword [esi + 0x48], eax
mov dword [esi + 0x44], edx
cmp edx, 8
jae 0x408221
and ebp, dword [ebx*4 + 0x43e00c]
mov ecx, edx
shl ebp, cl
add dword [esp], 3
or ebp, eax
mov eax, ebp
mov dword [esi + 0x48], ebp
add edx, ebx
mov dword [esi + 0x44], edx
mov ebx, ebp
cmp edx, 8
jb 0x408030
mov ebp, dword [esp]
jmp 0x408255
shr eax, 8
mov dword [esi + 0x48], eax
add edx, 0xfffffff8
mov dword [esi + 0x44], edx
cmp edx, 7
jbe 0x4081e3
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x408210
lea edx, [ecx + 1]
mov dword [esi + 0x30], edx
mov byte [ecx], al
mov edx, dword [esi + 0x44]
mov eax, dword [esi + 0x48]
jmp 0x408210
shr ebx, 8
mov dword [esi + 0x48], ebx
add edx, 0xfffffff8
mov dword [esi + 0x44], edx
cmp edx, 7
jbe 0x408033
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jae 0x408240
lea ecx, [eax + 1]
mov dword [esi + 0x30], ecx
mov byte [eax], bl
mov edx, dword [esi + 0x44]
mov ebx, dword [esi + 0x48]
jmp 0x408240
mov edx, eax
movzx eax, word [esi + 0x8a52]
movzx edi, byte [esi + 0x9012]
mov ecx, edx
shl eax, cl
or eax, ebx
mov dword [esi + 0x48], eax
add edi, edx
mov dword [esi + 0x44], edi
cmp edi, 8
jae 0x4082c1
mov ecx, dword [esi + 0x30]
xor eax, eax
cmp ecx, dword [esi + 0x34]
setb al
add esp, 0x2a4
pop esi
pop edi
pop ebx
pop ebp
ret
shr eax, 8
mov dword [esi + 0x48], eax
add edi, 0xfffffff8
mov dword [esi + 0x44], edi
cmp edi, 7
jbe 0x408290
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x34]
jae 0x4082b0
lea edx, [ecx + 1]
mov dword [esi + 0x30], edx
mov byte [ecx], al
mov edi, dword [esi + 0x44]
mov eax, dword [esi + 0x48]
jmp 0x4082b0