Function at 0x427110
Capabilities:
Encode data using xor

Disassembly:
sub esp, 8
push ebx
push ebp
push esi
mov esi, dword [0x46101c]
cmp byte [esi + 0x618], 0
push edi
je 0x427389
cmp dword [esi + 0x61c], 1
jle 0x427389
mov eax, dword [esi + 0x5b0]
push 0
push 1
push 0
push 0
mov ebx, 2
call fcn.00405740
mov ecx, dword [esi + 0x5b8]
push 0
push 0
xor eax, eax
call fcn.004052e0
mov eax, dword [esi + 0x384]
push 0
push 1
push 0xeb
push 0
xor ebx, ebx
call fcn.00405740
mov eax, dword [esi + 0x438]
push ebx
push 1
push 0xffffffffffffffbf
push ebx
call fcn.00405740
mov eax, dword [esi + 0x438]
push ebx
push 1
push ebx
push ebx
mov ebx, 1
call fcn.00405740
mov ebx, dword [esi + 0x5fc]
mov ebp, 0x258
lea esp, [esp]
mov eax, 0x66666667
imul ebx
sar edx, 2
mov edi, edx
shr edi, 0x1f
push 0
add edi, edx
push 1
lea eax, [edi + edi*4]
add eax, eax
push 0x104
sub ebx, eax
mov eax, dword [esi + 0x358]
push ebp
call fcn.00405740
mov ebx, edi
sub ebp, 0x55
test ebx, ebx
jne 0x4271b0
mov ebx, dword [esi + 0x5f8]
xor ebp, ebp
cmp ebx, 0x493e0
jl 0x4271fb
lea ebp, [edi + 3]
jmp 0x427217
cmp ebx, 0x30d40
jl 0x42720a
mov ebp, 2
jmp 0x427217
cmp ebx, 0x186a0
jl 0x427217
mov ebp, 1
test ebx, ebx
jle 0x427299
mov dword [esp + 0x10], 0x29e
jmp 0x427230
mov eax, 0x66666667
imul ebx
mov eax, dword [esi + ebp*4 + 0x388]
sar edx, 2
mov edi, edx
push 0
shr edi, 0x1f
add edi, edx
mov edx, dword [esp + 0x14]
push 1
lea ecx, [edi + edi*4]
add ecx, ecx
push 0x41f
sub ebx, ecx
push edx
call fcn.00405740
cmp byte [esi + 0x624], 0
je 0x42728e
mov eax, dword [esp + 0x10]
push 0
push 1
lea ecx, [ebp + ebp*4 + 0x73]
push 0x41f
lea edx, [ebx + ecx*2]
mov ebx, dword [esi + 0x628]
push eax
mov eax, dword [esi + edx*4]
call fcn.00405740
sub dword [esp + 0x10], 0x46
mov ebx, edi
test ebx, ebx
jne 0x427230
mov ebx, dword [esi + 0x604]
cmp ebx, 0x186a0
mov dword [esp + 0x10], 0
jl 0x4272b9
mov dword [esp + 0x10], 3
jmp 0x4272db
cmp ebx, 0xc350
jl 0x4272cb
mov dword [esp + 0x10], 2
jmp 0x4272db
cmp ebx, 0x7530
jl 0x4272db
mov dword [esp + 0x10], 1
mov ebp, 0x122
mov ecx, dword [esp + 0x10]
mov eax, 0x66666667
imul ebx
sar edx, 2
mov edi, edx
shr edi, 0x1f
push 0
add edi, edx
push 1
lea eax, [edi + edi*4]
add eax, eax
push 0x33e
sub ebx, eax
mov eax, dword [esi + ecx*4 + 0x388]
push ebp
call fcn.00405740
mov ebx, edi
sub ebp, 0x3f
test ebx, ebx
jne 0x4272e0
mov ecx, dword [esi + 0x5b4]
push edi
push edi
xor eax, eax
call fcn.004052e0
mov ecx, dword [esi + 0x5bc]
push edi
push edi
lea eax, [edi - 0x64]
call fcn.004052e0
mov ecx, dword [esi + 0x5c0]
push edi
push edi
xor eax, eax
call fcn.004052e0
mov ecx, dword [esi + 0x5c4]
push edi
push edi
lea eax, [edi + 0x64]
call fcn.004052e0
mov eax, dword [esi + 0x61c]
cmp eax, 3
je 0x427369
cmp eax, 2
jne 0x42737b
mov eax, dword [esi + 0x5b0]
movsx edx, word [eax + 0x408]
call fcn.00407830
cmp dword [esi + 0x61c], 6
jne 0x427389
call fcn.00430cc0
cmp byte [esi + 0x5e8], 0
je 0x4276db
mov eax, dword [0x46101c]
cmp byte [eax + 0x618], 0
jne 0x4276db
cmp byte [eax + 0x638], 0
jne 0x4276db
mov edi, 2
cmp dword [esi + 0x5ec], edi
jl 0x4273d7
mov eax, dword [esi + 0x324]
push 0
push 1
push 0
push 0
xor ebx, ebx
call fcn.00405740
cmp byte [esi + 0x5d8], 0
je 0x42741e
cmp dword [esi + 0x5dc], 0x64
mov ecx, dword [esi + 0x5e4]
jge 0x42740c
movzx edx, byte [esi + 0x5da]
mov eax, dword [esi + 0x5e0]
lea eax, [eax + eax*8]
push edx
lea edx, [ecx + eax*2]
mov ecx, dword [esi + edx*4 + 0x4bc]
jmp 0x427415
mov ecx, dword [esi + ecx*4 + 0x594]
push 0
push 0
xor eax, eax
call fcn.004052e0
cmp byte [esi + 0x5c8], 0
je 0x427445
movzx edx, byte [esi + 0x5ca]
mov ecx, dword [esi + 0x5d4]
mov ecx, dword [esi + ecx*4 + 0x46c]
push edx
push 0
xor eax, eax
call fcn.004052e0
cmp dword [esi + 0x5ec], 3
jne case.0x42746e.11
mov edx, dword [esi + 0x330]
movsx eax, word [edx + 0x408]
add eax, 0xfffffff6
cmp eax, 0x5a
ja case.0x42746e.11
movzx eax, byte [eax + 0x4277fc]
jmp dword [eax*4 + 0x4277d8]
mov ecx, dword [esi + 0x4ac]
jmp 0x4274d6
mov eax, dword [esi + 0x4ac]
call fcn.00405680
jmp case.0x42746e.11
mov eax, dword [esi + 0x630]
lea ecx, [eax + eax*8]
mov ecx, dword [esi + ecx*8 + 0x500]
jmp 0x4274d6
mov eax, dword [esi + 0x630]
lea edx, [eax + eax*8]
mov eax, dword [esi + edx*8 + 0x500]
call fcn.00405680
jmp case.0x42746e.11
mov ecx, dword [esi + 0x4b0]
jmp 0x4274d6
mov ecx, dword [esi + 0x4b4]
jmp 0x4274d6
mov eax, dword [esi + 0x4b4]
call fcn.00405680
jmp case.0x42746e.11
mov ecx, dword [esi + 0x4b8]
push 0
push 0
xor eax, eax
call fcn.004052e0
cmp dword [esi + 0x5ec], edi
jl 0x4276c0
mov eax, dword [esi + 0x614]
push 0
push 1
push eax
mov eax, dword [esi + 0x334]
push 0x8c
xor ebx, ebx
call fcn.00405740
mov ecx, dword [esi + 0x344]
movzx eax, word [ecx + 0x408]
test ax, ax
jle 0x42755d
cwde
test eax, eax
jle 0x42755d
cmp eax, 4
jle 0x427534
cmp eax, 0xa
jne 0x42755d
push ebx
push ebx
xor eax, eax
call fcn.004052e0
mov ecx, dword [esi + 0x344]
movsx edx, word [ecx + 0x40e]
mov ecx, dword [esi + edx*4 + 0x348]
cmp word [ecx + 0x408], 0
jne 0x42755d
push 0
push 0
xor eax, eax
call fcn.004052e0
mov ecx, dword [esi + 0x60c]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ebx
mov ebp, 0x109
mov ecx, dword [esi + 0x614]
mov eax, 0x66666667
imul ebx
sar edx, 2
mov edi, edx
shr edi, 0x1f
push 0
add edi, edx
push 1
lea eax, [edi + edi*4]
add eax, eax
push ecx
sub ebx, eax
mov eax, dword [esi + 0x338]
push ebp
call fcn.00405740
mov ebx, edi
sub ebp, 0x25
test ebx, ebx
jne 0x427583
mov edx, dword [esi + 0x614]
mov eax, dword [esi + 0x340]
push edi
push 1
add edx, 0xf
push edx
push 0x144
call fcn.00405740
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov ecx, eax
shl ecx, 4
sub ecx, eax
add ecx, ecx
add ecx, ecx
sub ebx, ecx
mov ebp, 0x181
mov eax, 0x66666667
imul ebx
mov eax, dword [esi + 0x614]
sar edx, 2
mov edi, edx
push 0
shr edi, 0x1f
add edi, edx
push 1
lea edx, [edi + edi*4]
push eax
mov eax, dword [esi + 0x338]
add edx, edx
sub ebx, edx
push ebp
call fcn.00405740
sub ebp, 0x25
cmp ebp, 0x137
mov ebx, edi
jg 0x4275f2
mov ebx, dword [esi + 0x610]
mov ebp, 0x1d6
lea esp, [esp]
mov eax, 0x66666667
imul ebx
mov eax, dword [esi + 0x33c]
sar edx, 2
mov edi, edx
shr edi, 0x1f
add edi, edx
mov edx, dword [esi + 0x614]
push 0
push 1
add edx, 9
lea ecx, [edi + edi*4]
add ecx, ecx
push edx
sub ebx, ecx
push ebp
call fcn.00405740
sub ebp, 0x25
mov ebx, edi
cmp ebp, 0x18c
jne 0x427640
mov ecx, dword [esi + 0x614]
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0
lea eax, [eax + eax*4]
push 1
add eax, eax
add ecx, 0xf
push ecx
sub ebx, eax
mov eax, dword [esi + 0x340]
push 0x1a8
call fcn.00405740
mov eax, dword [esi + 0x5fc]
call fcn.004314a0
mov ecx, dword [esi + 0x330]
cmp word [ecx + 0x408], 1
jl 0x4276db
push 0
push 0
xor eax, eax
call fcn.004052e0
cmp byte [esi + 0x638], 0
je case.0x427727.4
mov eax, dword [esi + 0x63c]
dec eax
cmp eax, 3
ja case.0x427727.4
jmp dword [eax*4 + 0x427858]
mov eax, dword [esi + 0x450]
movsx edx, word [eax + 0x408]
call fcn.00407830
mov eax, dword [esi + 0x644]
cmp eax, 0x31
ja case.0x427727.4
movzx edx, byte [eax + 0x427874]
jmp dword [edx*4 + 0x427868]
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
jmp fcn.00430cc0
mov ecx, dword [esi + 0x64c]
mov ecx, dword [esi + ecx*4 + 0x454]
push 0
push 0
xor eax, eax
call fcn.004052e0
mov edx, dword [esi + 0x648]
mov eax, dword [esi + 0x64c]
mov esi, dword [esi + eax*4 + 0x460]
push edx
push 0
call fcn.004051c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov eax, dword [esi + 0x644]
cmp eax, 0x14
ja case.0x427727.4
movzx ecx, byte [eax + 0x4278b8]
jmp dword [ecx*4 + 0x4278a8]
mov edx, 0x113
sub edx, eax
mov ecx, dword [esi + edx*4]
push 0
push 0
xor eax, eax
call fcn.004052e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov ecx, dword [esi + 0x450]
push 0
push 0
xor eax, eax
call fcn.004052e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov eax, dword [esi + 0x450]
pop edi
pop esi
pop ebp
xor edx, edx
pop ebx
add esp, 8
jmp fcn.00407830