Function at 0x435210
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xb60
push ebx
mov ebx, dword [esp + 0xb68]
xor eax, eax
push ebp
mov ecx, dword [ebx + 0x3aec]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x3b80]
mov ebp, dword [esp + 0xb94]
push esi
mov esi, dword [esp + 0xba0]
lea eax, [eax + eax*8]
push edi
mov edi, dword [esp + 0xba0]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0xba8]
mov ecx, dword [esp + 0xb98]
push eax
mov eax, dword [esp + 0xb94]
push esi
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0xb9c]
push edi
push ebp
push ecx
mov ecx, dword [esp + 0xba0]
push edx
mov edx, dword [esp + 0xba0]
push eax
push ecx
lea eax, [esp + 0x40]
push edx
lea ecx, [esp + 0x34]
push eax
lea edx, [esp + 0x80]
push ecx
lea eax, [esp + 0x68]
push edx
lea ecx, [esp + 0x64]
push eax
mov eax, dword [esp + 0xbb4]
lea edx, [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0xbbc]
push edx
push eax
push ecx
push ebx
mov dword [esp + 0x94], 0xffffffff
call fcn.004348d0
mov eax, dword [esp + 0xa0]
add esp, 0x48
test eax, eax
jg 0x4352f7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x435ce7
jmp 0x43536b
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x43536b
mov edx, dword [esp + 0xba8]
mov ecx, dword [esp + 0xb98]
push edx
mov edx, dword [esp + 0xb98]
push esi
push edi
push ebp
push ecx
mov ecx, dword [esp + 0xba4]
push edx
mov edx, dword [esp + 0xba4]
push ecx
mov ecx, dword [esp + 0xba4]
push edx
lea edx, [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x68]
push eax
mov eax, dword [ebx + 0x3b80]
push ecx
mov ecx, dword [esp + 0xbb0]
push edx
push eax
push ecx
push ebx
call fcn.00434fc0
add esp, 0x44
mov dword [esp + 0x10], eax
test eax, eax
je 0x435ce7
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
cmp edx, eax
jge 0x435cdf
mov eax, dword [0x75049c]
test eax, eax
jne 0x4356ec
mov eax, dword [esp + 0xb88]
test eax, eax
je 0x4356ec
test byte [esp + 0xba8], 1
je 0x4356ec
mov esi, dword [esp + 0xb9c]
mov ecx, dword [esp + 0xba4]
mov eax, edi
mov edx, edi
shr esi, 0x10
shl eax, 0x10
or esi, eax
mov eax, 3
shr edx, 0x10
shl ecx, 0x10
or edx, ecx
xor ebp, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x7c], 0x18
mov dword [esp + 0x80], 0x1d
mov dword [esp + 0x84], 0x21
mov dword [esp + 0x88], 0x22
mov dword [esp + 0x8c], 0x28
mov dword [esp + 0x90], 0x2d
mov dword [esp + 0x94], 0x34
mov dword [esp + 0x98], 0x3b
mov dword [esp + 0x60], 2
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 0xb
mov dword [esp + 0x6c], 0xa3
mov dword [esp + 0x70], 0xa7
xor edi, edi
lea ebx, [esp + 0x74]
mov ecx, dword [ebx]
cmp ecx, 0xffffffff
je 0x435484
cmp ecx, 0x20
jge 0x435469
mov eax, esi
jmp 0x43546e
mov eax, edx
sub ecx, 0x20
shr eax, cl
lea ecx, [ebp + ebp]
add ebx, 4
and eax, 1
or eax, ecx
inc edi
cmp edi, 0xa
mov ebp, eax
jl 0x435459
xor edi, edi
lea esi, [esp + 0x60]
mov ecx, dword [esi]
cmp ecx, 0xffffffff
je 0x4356de
mov eax, ebp
xor edx, edx
div ecx
imul eax, ecx
cmp eax, ebp
je 0x4354b0
inc edi
add esi, 4
cmp edi, 5
jl 0x43548a
jmp 0x4356de
cmp byte [esp + 0xba8], 0x27
jne 0x4356de
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x970]
mov dword [0x75049c], 1
mov dword [esp + 0x9c], 0x59c94aba
mov dword [esp + 0xa0], 0x1cde4c9b
mov dword [esp + 0xa4], 0xddf4b89
mov dword [esp + 0xa8], 0x1dc9508b
mov dword [esp + 0xac], 0xbc954ce
mov dword [esp + 0xb0], 0x17c34b9d
mov dword [esp + 0xb4], 0x17cd41ce
mov dword [esp + 0xb8], 0x15c24dce
mov dword [esp + 0xbc], 0xbcf0297
mov dword [esp + 0xc0], 0x1cd8438b
mov dword [esp + 0xc4], 0x59de4dce
mov dword [esp + 0xc8], 0xdc5468b
mov dword [esp + 0xcc], 0x1cc456ce
mov dword [esp + 0xd0], 0x15c544ce
mov dword [esp + 0xd4], 0x11db028b
mov dword [esp + 0xd8], 0x59c44187
mov dword [esp + 0xdc], 0xac94d8a
mov dword [esp + 0xe0], 0xdc34cce
mov dword [esp + 0xe4], 0x1ad447ce
mov dword [esp + 0xe8], 0x59c8478b
mov dword [esp + 0xec], 0x59c94a9a
mov dword [esp + 0xf0], 0x1cd64b9d
mov dword [esp + 0xf4], 0x59ca4dce
mov dword [esp + 0xf8], 0x349c12dd
mov dword [esp + 0xfc], 0x16f802c0
mov dword [esp + 0x100], 0x14c950ce
mov dword [esp + 0x104], 0x59c95481
mov dword [esp + 0x108], 0xac54a9a
mov dword [esp + 0x10c], 0x14c54ece
mov dword [esp + 0x110], 0xdcd5687
mov dword [esp + 0x114], 0x55c24d87
mov dword [esp + 0x118], 0x1cc052ce
mov dword [esp + 0x11c], 0x59c9518f
mov dword [esp + 0x120], 0x10cb479c
mov dword [esp + 0x124], 0xbc9569d
mov dword [esp + 0x128], 0x79ac22c0
rep stosd dword es:[edi], eax
mov edx, dword [esp + eax + 0x9c]
add eax, 4
xor edx, 0x79ac22ee
cmp eax, 0x90
mov dword [esp + eax + 0x96c], edx
jl 0x435664
mov eax, dword [0x748004]
push 0x40000
push 0
push eax
lea ecx, [esp + 0x97c]
push 0xffffffffffffffff
push ecx
call fcn.0042b5a0
mov eax, dword [0x78ca5c]
add esp, 0x14
test eax, eax
jne 0x4356bb
mov edx, dword [0x748004]
push 0x10
push edx
call fcn.004f3450
add esp, 8
push 0
push 0
push 0x671120
call fcn.004f6430
or eax, 0x80000000
push 0
push eax
push 0x671120
call fcn.004f6640
add esp, 0x18
mov ebx, dword [esp + 0xb74]
mov edi, dword [esp + 0xba0]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
cmp byte [ecx + eax], 0
jne 0x435718
lea eax, [ecx + 0x800]
cdq
and edx, 0x7ff
add eax, edx
sar eax, 0xb
shl eax, 0xb
mov dword [esp + 0x14], eax
jmp 0x43536b
mov ecx, dword [esp + 0xba8]
mov ebp, dword [esp + 0xba4]
mov edx, dword [esp + 0xb9c]
push ecx
mov ecx, dword [esp + 0xb9c]
push ebp
push edi
push edx
mov edx, dword [esp + 0xba4]
push ecx
mov ecx, dword [esp + 0xba4]
push edx
mov edx, dword [esp + 0xba4]
push ecx
mov ecx, dword [esp + 0xba4]
push edx
push ecx
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x38]
push edx
push ecx
push eax
call fcn.004350e0
mov esi, eax
add esp, 0x30
test esi, esi
mov dword [esp + 0x5c], esi
je 0x435cdf
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp eax, edx
jg 0x435cdf
test byte [esi + 0x12], 8
jne 0x43536b
mov eax, dword [esp + 0xba8]
mov ecx, dword [esp + 0xb9c]
mov edx, dword [esp + 0xb98]
push eax
mov eax, dword [esp + 0xb98]
push ebp
push edi
push ecx
mov ecx, dword [esp + 0xba0]
push edx
mov edx, dword [esp + 0xba0]
push eax
mov eax, dword [esp + 0xba0]
push ecx
push edx
mov edx, dword [esi + 0x18]
push eax
lea ecx, [esp + 0x7a]
xor eax, eax
push ecx
mov ax, word [esi + 0x1c]
push 0
push edx
lea ecx, [esp + 0x1a0]
push eax
push ecx
push ebx
call fcn.00436430
add esp, 0x3c
cmp eax, 0xffffffff
je 0x435cdf
xor edx, edx
xor ecx, ecx
mov dx, word [esi + 0x24]
mov cl, byte [esi + 0x13]
mov dword [esp + 0x1c], ecx
lea eax, [edx + esi + 0x26]
mov dword [esp + 0x24], eax
call fcn.00417c00
mov ebp, eax
test ebp, ebp
je 0x435cdf
mov edx, dword [esp + 0xba8]
mov eax, dword [esp + 0xba4]
mov ecx, dword [esp + 0xb9c]
push edx
mov edx, dword [esp + 0xb9c]
push eax
mov eax, dword [esp + 0xb9c]
push edi
push ecx
mov ecx, dword [esp + 0xba0]
push edx
mov edx, dword [esp + 0xba0]
push eax
mov eax, dword [esp + 0xba0]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x44]
push eax
push ecx
push edx
push ebp
push ebx
call fcn.00435160
add esp, 0x34
cmp eax, 0xffffffff
je 0x43536b
mov eax, dword [esi + 0x18]
mov dword [esp + 0x24], eax
xor eax, eax
mov ax, word [esi + 0x1c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xb78]
mov ecx, dword [eax + 0xc]
mov dword [ebp + 8], eax
mov dword [ebp], ecx
cmp word [esp + 0x170], 0x10a
jne 0x435905
mov edx, dword [esp + 0x1a8]
lea ecx, [esp + 0x1cc]
mov dword [ebp + 0x20], edx
mov eax, dword [esp + 0x1ac]
lea edx, [ebp + 0xc6]
push ecx
push edx
mov dword [ebp + 0x24], eax
call fcn.004346a0
mov eax, dword [esp + 0x248]
mov edx, dword [esp + 0x24c]
mov esi, dword [esp + 0x19a]
add esp, 8
lea ecx, [eax + 0xd8]
lea eax, [edx + eax + 0xd8]
mov dword [esp + 0x28], ecx
and esi, 7
mov dword [esp + 0x18], eax
jmp 0x43595d
mov ecx, dword [esp + 0x1a8]
lea eax, [esp + 0x1c4]
mov dword [ebp + 0x20], ecx
mov edx, dword [esp + 0x1ac]
lea ecx, [ebp + 0xc6]
push eax
push ecx
mov dword [ebp + 0x24], edx
call fcn.004346a0
mov eax, dword [esp + 0x220]
mov ecx, dword [esp + 0x224]
mov esi, dword [esp + 0x19a]
add esp, 8
lea edx, [eax + 0xb0]
and esi, 7
mov dword [esp + 0x28], edx
lea edx, [ecx + eax + 0xb0]
mov dword [esp + 0x18], edx
mov eax, dword [ebp + 0x20]
lea ecx, [ebp + 0xbe]
push eax
push ecx
call fcn.00422660
lea edx, [ebp + 0xd0]
push 1
push edx
call fcn.004225e0
add esp, 0x10
xor eax, eax
cmp esi, 3
mov dword [ebp + 0x5c], eax
jne 0x435b0d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
add eax, 0x7ff
push ecx
cdq
and edx, 0x7ff
add eax, edx
mov esi, eax
sar esi, 0xb
call fcn.004f5720
mov edx, esi
shl edx, 0xb
push edx
call fcn.004f56f0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x435ce7
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
push 0
push eax
push ecx
push ebx
call fcn.00436760
mov edi, dword [esp + 0x40]
push esi
push edi
push 0
push eax
push ebx
mov dword [esp + 0x40], eax
call fcn.0041c210
add esp, 0x24
cmp eax, esi
jne 0x435ce7
mov edx, dword [ebp + 0x20]
push edx
call fcn.00423ee0
mov edx, dword [esp + 0x2c]
mov ecx, dword [ebp + 0x20]
mov dword [ebp + 0x5c], eax
add esp, 4
lea esi, [edx + edi]
mov edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0x5c]
mov ecx, dword [esp + 0x1c]
test eax, eax
mov dword [ebp + 0x64], ecx
je 0x435a97
push ebp
push ebx
call fcn.0042afe0
mov edx, dword [esp + 0x30]
mov esi, eax
mov eax, dword [ebp + 0x64]
push edx
push eax
lea ecx, [esp + 0x140]
push str.__x__x_
push ecx
call fcn.0053f7f2
push esi
call fcn.0053f454
lea edx, [esp + 0x14c]
mov edi, eax
push edx
call fcn.0053f454
add edi, eax
lea eax, [edi + edi + 2]
push eax
call fcn.00423ee0
lea ecx, [esp + 0x154]
mov dword [ebp + 0x50], eax
push ecx
push esi
push 0x672ee0
push eax
call fcn.0053f7f2
push esi
call fcn.004f5720
add esp, 0x38
mov edi, dword [esp + 0xba0]
mov eax, dword [ebx + 0x3acc]
test eax, eax
jne 0x435ab2
mov eax, dword [ebx + 0x3b74]
test eax, eax
je 0x435abc
mov dword [ebp + 0x80], 1
mov esi, dword [esp + 0xb78]
mov eax, dword [esp + 0x5c]
mov dword [esi + 0xc], ebp
mov cl, byte [eax + 0x12]
test cl, 1
je 0x435ad9
or byte [ebp + 0xcd], 1
test byte [eax + 0x12], 2
je 0x435ccf
push 0x58
call fcn.00423ee0
mov dword [eax + 0x14], ebp
mov ecx, dword [esi + 0x1c]
add esp, 4
inc ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 8], esi
mov edx, dword [esi + 4]
test edx, edx
jne 0x435c57
mov dword [esi + 4], eax
jmp 0x435c67
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0xba4]
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xba8]
lea esi, [esp + edx + 0x170]
mov edx, dword [esp + 0xb9c]
push eax
mov eax, dword [esp + 0xb9c]
push ecx
mov ecx, dword [esp + 0xb9c]
push edi
push edx
mov edx, dword [esp + 0xba0]
push eax
mov eax, dword [esp + 0xba0]
push ecx
mov ecx, dword [esp + 0xba0]
push edx
push eax
lea edx, [esp + 0x14c]
push ecx
lea eax, [esp + 0x40]
push edx
lea ecx, [esp + 0x54]
push eax
lea edx, [esp + 0x44]
push ecx
lea eax, [esp + 0x70]
push edx
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x78]
push eax
mov eax, dword [esp + 0x80]
push ecx
push edx
push eax
push ebx
call fcn.004348d0
mov eax, dword [esp + 0x74]
add esp, 0x48
test eax, eax
je 0x435c1b
lea ecx, [eax + eax*2]
lea eax, [ecx*4 + 4]
push eax
call fcn.004f56f0
add esp, 4
test eax, eax
je 0x43536b
mov edx, dword [esp + 0x2c]
xor ecx, ecx
mov dword [eax], edx
mov edx, dword [esp + 0x2c]
test edx, edx
jle 0x435c03
lea edx, [eax + 8]
mov esi, dword [esp + 0x44]
inc ecx
add edx, 0xc
mov esi, dword [esi + ecx*4 - 4]
mov dword [edx - 0x10], esi
mov esi, dword [esp + 0x40]
mov esi, dword [esi + ecx*4 - 4]
mov dword [edx - 0xc], esi
mov esi, dword [esp + 0x18]
mov esi, dword [esi + ecx*4 - 4]
mov dword [edx - 8], esi
mov esi, dword [esp + 0x2c]
cmp ecx, esi
jl 0x435bd6
mov dword [ebp + 0x54], eax
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
push 0
push ecx
push edx
push ebx
call fcn.00436760
add esp, 0x10
jmp 0x435c24
mov ecx, dword [esp + 0x50]
mov eax, dword [esi + 4]
add eax, dword [ecx]
mov edx, dword [esp + 0x44]
mov dword [ebp + 0x64], eax
push edx
call fcn.004f5720
mov eax, dword [esp + 0x44]
push eax
call fcn.004f5720
mov ecx, dword [esp + 0x20]
push ecx
call fcn.004f5720
mov edx, dword [esp + 0x28]
push edx
call fcn.004f5720
add esp, 0x10
jmp 0x435a9e
mov ecx, dword [edx]
test ecx, ecx
je 0x435c65
mov edx, ecx
mov ecx, dword [edx]
test ecx, ecx
jne 0x435c5d
mov dword [edx], eax
mov cl, byte [ebp + 0xcd]
mov edx, dword [esp + 0xba8]
or cl, 2
push edx
mov edx, dword [esp + 0xba0]
mov byte [ebp + 0xcd], cl
mov ecx, dword [esp + 0xba8]
mov dword [ebp + 0x10], eax
push ecx
mov ecx, dword [esp + 0xba0]
push edi
push edx
mov edx, dword [esp + 0xba4]
push ecx
mov ecx, dword [esp + 0xba4]
push edx
mov edx, dword [esp + 0xba4]
push ecx
mov ecx, dword [esp + 0xba4]
push edx
mov edx, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x48]
push edx
push ecx
push ebp
push eax
push ebx
call fcn.00435210
add esp, 0x38
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp eax, edx
jl 0x43536b
mov dword [esp + 0x4c], 0
mov eax, dword [esp + 0x10]
push eax
call fcn.004f5720
mov ecx, dword [esp + 0x34]
push ecx
call fcn.004f5720
mov edx, dword [esp + 0x40]
push edx
call fcn.004f5720
mov eax, dword [esp + 0x40]
push eax
call fcn.004f5720
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004f5720
mov eax, dword [esp + 0x60]
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb60
ret