Function at 0x435820
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x355c
call fcn.00438ec0
xor eax, eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov edx, dword [esi + 0x11e8]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x3c], eax
mov byte [esp + 0x13], al
mov al, byte [esi + 0x120c]
inc dword [esi + 0x120c]
and al, 3
push edi
mov byte [esi + 0x12a2], al
mov eax, dword [esi + 0x11f0]
push edx
lea ebx, [esi + eax*4 + 0x1c0c]
lea ecx, [esp + eax*4 + 0x8ec]
lea edi, [esi + 0x13ea]
lea eax, [esi + 0x10]
push edi
pxor xmm0, xmm0
push eax
movq qword [esp + 0xa0], xmm0
mov dword [esp + 0x58], ebx
mov dword [esp + 0x34], ecx
call fcn.0043e880
mov eax, dword [esi + 0x11e0]
lea ecx, [eax + eax*4]
lea edx, [ebx + ecx*4]
push edx
mov edx, dword [esi + 0x11e8]
call fcn.00444c40
mov eax, dword [esi + 0x11e0]
lea eax, [eax + eax*4]
movss xmm0, dword [ebx + eax*4]
lea eax, [ebx + eax*4]
cvtps2pd xmm1, xmm0
movsd xmm0, qword [0x453eb8]
addsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e0]
mov edx, dword [esi + 0x11e8]
lea ecx, [eax + eax*4]
sar edx, 3
add ecx, edx
movss xmm1, dword [ebx + ecx*4]
cvtps2pd xmm1, xmm1
lea eax, [ebx + ecx*4]
addsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e0]
mov ecx, dword [esi + 0x11e8]
lea edx, [eax + eax*4]
sar ecx, 3
lea eax, [ebx + edx*4]
movss xmm1, dword [eax + ecx*8]
lea eax, [eax + ecx*8]
cvtps2pd xmm1, xmm1
subsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e8]
add esp, 0x10
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x11e0]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*4]
movss xmm1, dword [eax + ecx*4]
lea eax, [eax + ecx*4]
cvtps2pd xmm1, xmm1
subsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov ecx, dword [esi + 0x11e8]
mov eax, dword [esi + 0x11e0]
lea edx, [eax + eax*4]
sar ecx, 3
shl ecx, 4
add ecx, ebx
movss xmm1, dword [ecx + edx*4]
cvtps2pd xmm1, xmm1
addsd xmm1, xmm0
lea eax, [ecx + edx*4]
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e8]
sar eax, 3
add eax, dword [esi + 0x11e0]
mov edi, dword [ebp + 0x10]
lea eax, [eax + eax*4]
movss xmm1, dword [ebx + eax*4]
lea eax, [ebx + eax*4]
cvtps2pd xmm1, xmm1
addsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e8]
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x11e0]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*4]
movss xmm1, dword [eax + ecx*8]
lea eax, [eax + ecx*8]
cvtps2pd xmm1, xmm1
subsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [eax], xmm1
mov eax, dword [esi + 0x11e8]
sar eax, 3
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [esi + 0x11e0]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*4]
movss xmm1, dword [eax + ecx*4]
lea eax, [eax + ecx*4]
cvtps2pd xmm1, xmm1
subsd xmm1, xmm0
xorps xmm0, xmm0
cvtpd2ps xmm0, xmm1
movss dword [eax], xmm0
cmp dword [esi + 0x1248], 0
jne 0x4362d0
mov ecx, dword [esi + 0x13e4]
push ecx
push ebx
lea edx, [esp + 0x8f0]
push edx
lea eax, [esp + 0x104]
push eax
push esi
call fcn.0043e2f0
mov ecx, dword [esp + 0x3c]
push ebx
push ecx
lea edx, [esp + 0x114]
push edx
push esi
call fcn.0043d8e0
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
push eax
push ebx
push ecx
lea edx, [esp + 0x128]
push edx
push esi
call fcn.0043cc90
mov eax, dword [ebp + 0x14]
push eax
lea ecx, [esp + 0x134]
push ecx
push esi
call fcn.0043c970
mov edx, dword [ebp + 0x14]
add esp, 0x44
push edx
lea eax, [esp + 0xfc]
push ebx
push eax
call fcn.00435680
mov ecx, dword [esi + 0x11e4]
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
lea eax, [esi + 0x1280]
push ecx
push eax
mov dword [esp + 0x24], 0x100
call fcn.004396a0
movq xmm0, qword [edi]
movq qword [esp + 0xbc], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [edi + 0x10]
mov dword [esp + 0x2c], eax
or eax, 0xffffffff
movq qword [esp + 0xcc], xmm0
movq xmm0, qword [edi + 0x18]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
movq qword [esp + 0xd4], xmm0
movq xmm0, qword [edi + 0x20]
lea eax, [esi + 0x94]
push 0x1100
push eax
lea edx, [esp + 0x1384]
movq qword [esp + 0xe4], xmm0
movq xmm0, qword [edi + 0x28]
push edx
movq qword [esp + 0xf0], xmm0
call sub.MSVCR80.DLL_memcpy
movsx eax, byte [esi + 0x12a2]
movzx ecx, word [esi + 0x168c]
mov edx, dword [esi + 0x1688]
add esp, 0x20
mov dword [esp + 0x88], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x30]
jne 0x435c07
mov ebx, dword [esp + 0x40]
cmp dword [esp + 0x1c], 6
je 0x436233
mov eax, dword [ebp + 0x18]
cmp ebx, eax
jle 0x435f67
mov eax, dword [esp + 0x24]
xor ecx, ecx
cmp eax, ecx
jne 0x435eaa
cmp dword [esp + 0x1c], 2
jl 0x435eaa
movss xmm0, dword [esp + 0x3ac]
movsd xmm1, qword [0x451fa0]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
comisd xmm0, xmm1
ja 0x435be3
movapd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [esp + 0x3ac], xmm0
mov byte [esi + 0x129e], cl
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], 0xffffffff
jmp 0x435ecf
cmp eax, dword [esp + 0x34]
jne 0x435c16
mov ebx, dword [esp + 0x38]
jmp 0x435b92
cmp dword [esp + 0x1c], 0
jle 0x435cb3
movq xmm0, qword [esp + 0xa8]
movq qword [edi], xmm0
movq xmm0, qword [esp + 0xb0]
movq qword [edi + 8], xmm0
movq xmm0, qword [esp + 0xb8]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [esp + 0xc0]
movq qword [edi + 0x18], xmm0
movq xmm0, qword [esp + 0xc8]
push 0x1100
lea eax, [esp + 0x136c]
push eax
movq qword [edi + 0x20], xmm0
movq xmm0, qword [esp + 0xd8]
lea eax, [esi + 0x94]
push eax
movq qword [edi + 0x28], xmm0
call sub.MSVCR80.DLL_memcpy
mov cl, byte [esp + 0x94]
mov dx, word [esp + 0x5c]
mov eax, dword [esp + 0x60]
add esp, 0xc
mov byte [esi + 0x12a2], cl
mov word [esi + 0x168c], dx
mov dword [esi + 0x1688], eax
push ebx
lea eax, [esi + 0x12a4]
push eax
lea eax, [esi + 0x94]
push eax
lea eax, [esi + 0x1280]
push eax
lea ecx, [esp + 0x108]
push ecx
push esi
call fcn.0043c380
add esp, 0x18
cmp dword [esp + 0x1c], 6
jne 0x435d2c
cmp dword [esp + 0x24], 0
jne 0x435d2c
movq xmm0, qword [edi]
movq qword [esp + 0x58], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0x60], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esp + 0x68], xmm0
movq xmm0, qword [edi + 0x18]
movq qword [esp + 0x70], xmm0
movq xmm0, qword [edi + 0x20]
movq qword [esp + 0x78], xmm0
movq xmm0, qword [edi + 0x28]
movq qword [esp + 0x80], xmm0
mov edx, dword [ebp + 0x14]
mov eax, dword [esi + 0x1674]
push edx
push 0
push eax
push edi
push esi
call fcn.00437160
mov ecx, dword [esi + 0x11e8]
movsx edx, byte [esi + 0x129e]
push ecx
lea eax, [esi + 0x12a4]
push eax
movsx eax, byte [esi + 0x129d]
push edx
push eax
push edi
call fcn.00436d60
bsr ecx, dword [edi + 0x1c]
mov ebx, dword [edi + 0x14]
sub ebx, ecx
add esp, 0x28
dec ebx
cmp dword [esp + 0x1c], 6
mov dword [esp + 0x20], ecx
jne 0x435e87
cmp dword [esp + 0x24], 0
jne 0x435e87
cmp ebx, dword [ebp + 0x18]
jle 0x435e87
movq xmm0, qword [esp + 0x58]
mov dl, byte [esp + 0x3e0]
movq qword [edi], xmm0
movq xmm0, qword [esp + 0x60]
movq qword [edi + 8], xmm0
movq xmm0, qword [esp + 0x68]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [esp + 0x70]
movq qword [edi + 0x18], xmm0
movq xmm0, qword [esp + 0x78]
movq qword [edi + 0x20], xmm0
movq xmm0, qword [esp + 0x80]
movq qword [edi + 0x28], xmm0
xor eax, eax
mov byte [esi + 0x1c00], dl
cmp dword [esi + 0x11e4], eax
jle 0x435e01
nop
mov byte [esi + eax + 0x1280], 4
inc eax
cmp eax, dword [esi + 0x11e4]
jl 0x435df0
mov ecx, dword [ebp + 0x14]
cmp ecx, 2
je 0x435e0f
mov byte [esi + 0x1280], dl
mov eax, dword [esp + 0x54]
mov dx, word [esp + 0x50]
mov dword [esi + 0x1688], eax
xor eax, eax
mov word [esi + 0x168c], dx
cmp dword [esi + 0x11e8], eax
jle 0x435e41
nop
mov byte [esi + eax + 0x12a4], 0
inc eax
cmp eax, dword [esi + 0x11e8]
jl 0x435e30
push ecx
mov ecx, dword [esi + 0x1674]
push 0
push ecx
push edi
push esi
call fcn.00437160
mov edx, dword [esi + 0x11e8]
movsx ecx, byte [esi + 0x129d]
push edx
lea eax, [esi + 0x12a4]
push eax
movsx eax, byte [esi + 0x129e]
push eax
push ecx
push edi
call fcn.00436d60
bsr edx, dword [edi + 0x1c]
mov ebx, dword [edi + 0x14]
sub ebx, edx
add esp, 0x28
mov dword [esp + 0x20], edx
dec ebx
cmp dword [ebp + 0x1c], 0
jne 0x435b92
cmp dword [esp + 0x1c], 0
jne 0x435b92
cmp ebx, dword [ebp + 0x18]
jle 0x4362d0
jmp 0x435ba8
movsx edx, word [esp + 0x10]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x28], 1
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], edx
cmp eax, ecx
jne 0x436053
mov dword [esp + 0x2c], ecx
cmp dword [esi + 0x11e4], ecx
jle 0x436053
mov eax, dword [esi + 0x11ec]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x18], 0
cmp ecx, dword [esp + 0x20]
jge 0x435f2d
mov eax, dword [esp + 0x2c]
inc eax
imul eax, dword [esi + 0x11ec]
mov dword [esp + 0x8c], eax
movsx eax, byte [esi + ecx + 0x12a4]
cdq
xor eax, edx
sub eax, edx
add dword [esp + 0x18], eax
inc ecx
cmp ecx, dword [esp + 0x8c]
jl 0x435f12
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0x2c]
je 0x43601c
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esp + eax*4 + 0xe8]
jge 0x435f57
cmp dword [esp + eax*4 + 0x90], 0
je 0x43601c
mov dword [esp + eax*4 + 0x90], 1
jmp 0x436034
add eax, 0xfffffffb
cmp ebx, eax
jge 0x4362d0
movsx eax, word [esp + 0x10]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], 1
mov dword [esp + 0x40], ebx
cmp eax, dword [esp + 0x30]
je 0x436053
movq xmm0, qword [edi]
mov ecx, dword [edi + 0x18]
mov edx, dword [edi]
movq qword [esp + 0x58], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0x60], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esp + 0x68], xmm0
movq xmm0, qword [edi + 0x18]
push ecx
movq qword [esp + 0x74], xmm0
movq xmm0, qword [edi + 0x20]
mov dword [esp + 0x34], eax
push edx
lea eax, [esp + 0x3f0]
movq qword [esp + 0x80], xmm0
movq xmm0, qword [edi + 0x28]
push eax
movq qword [esp + 0x8c], xmm0
call sub.MSVCR80.DLL_memcpy
push 0x1100
lea eax, [esi + 0x94]
push eax
lea ecx, [esp + 0x247c]
push ecx
call sub.MSVCR80.DLL_memcpy
mov dl, byte [esi + 0x1c00]
add esp, 0x18
mov byte [esp + 0x17], dl
jmp 0x436053
mov edx, dword [esp + 0x18]
mov cx, word [esp + 0x10]
mov dword [esp + eax*4 + 0xe8], edx
mov word [esp + eax*2 + 0xa0], cx
mov ecx, dword [esi + 0x11ec]
add dword [esp + 0x48], ecx
add dword [esp + 0x20], ecx
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [esi + 0x11e4]
jl 0x435eed
mov edx, dword [esp + 0x24]
test dword [esp + 0x28], edx
jne 0x4360d0
mov ecx, dword [ebp + 0x18]
cmp ebx, ecx
jle 0x43608e
mov eax, dword [esp + 0x10]
mov ecx, 0x4000
cmp ax, cx
jge 0x436081
lea edx, [eax + eax]
movzx eax, dx
mov dword [esp + 0x10], eax
jmp 0x436129
mov dword [esp + 0x10], 0x7fff
jmp 0x436129
mov eax, ebx
sub eax, ecx
shl eax, 7
cdq
idiv dword [esi + 0x11e8]
add eax, 0x800
push eax
call fcn.00426460
mov ecx, dword [esp + 0x14]
mov edx, eax
and edx, 0xffff
movsx ebx, cx
sar eax, 0x10
imul edx, ebx
imul eax, ecx
sar edx, 0x10
add esp, 4
add edx, eax
movzx eax, dx
mov dword [esp + 0x10], eax
jmp 0x436129
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
sub ecx, dword [esp + 0x3c]
mov eax, dword [ebp + 0x18]
mov ebx, dword [esp + 0x38]
sub eax, edx
imul eax, ecx
sub ebx, edx
cdq
idiv ebx
sar ecx, 2
mov edx, eax
mov eax, dword [esp + 0x3c]
add edx, eax
movzx edx, dx
mov dword [esp + 0x10], edx
movsx edx, dx
lea ebx, [ecx + eax]
cmp edx, ebx
jle 0x436114
add ecx, eax
movzx eax, cx
mov dword [esp + 0x10], eax
jmp 0x436129
mov eax, dword [esp + 0x44]
mov ebx, eax
sub ebx, ecx
cmp edx, ebx
jge 0x436129
sub eax, ecx
movzx ecx, ax
mov dword [esp + 0x10], ecx
xor edx, edx
cmp dword [esi + 0x11e4], edx
jle 0x436199
cmp dword [esp + edx*4 + 0x90], 0
je 0x436147
movzx ecx, word [esp + edx*2 + 0xa0]
jmp 0x43614c
movzx ecx, word [esp + 0x10]
mov eax, dword [esp + edx*4 + 0x3d0]
mov ebx, eax
movsx ecx, cx
and ebx, 0xffff
sar eax, 0x10
imul ebx, ecx
imul eax, ecx
sar ebx, 0x10
add eax, ebx
cmp eax, 0x7fffff
jle 0x43617a
mov eax, 0x7fffff
jmp 0x436186
cmp eax, 0xff800000
jge 0x436186
mov eax, 0xff800000
shl eax, 8
mov dword [esp + edx*4 + 0xd8], eax
inc edx
cmp edx, dword [esi + 0x11e4]
jl 0x436133
mov ecx, dword [esi + 0x11e4]
mov dl, byte [esp + 0x3e0]
push ecx
xor ecx, ecx
cmp dword [ebp + 0x14], 2
lea eax, [esi + 0x1c00]
sete cl
mov byte [eax], dl
lea edx, [esp + 0xdc]
lea ebx, [esi + 0x1280]
push ecx
push eax
push edx
push ebx
call fcn.00439480
mov eax, dword [esi + 0x11e4]
push eax
push ebx
call fcn.004396a0
mov dword [esp + 0x34], eax
xor eax, eax
add esp, 0x1c
cmp dword [esi + 0x11e4], eax
jle 0x436226
mov ecx, dword [esi + 0x11e4]
movsd xmm0, qword [0x453eb0]
lea ebx, [ebx]
movd xmm1, dword [esp + eax*4 + 0xd8]
cvtdq2ps xmm1, xmm1
cvtss2sd xmm1, xmm1
mulsd xmm1, xmm0
cvtsd2ss xmm1, xmm1
movss dword [esp + eax*4 + 0xf8], xmm1
inc eax
cmp eax, ecx
jl 0x436200
inc dword [esp + 0x1c]
mov ebx, dword [esp + 0x4c]
jmp 0x435b84
cmp dword [esp + 0x24], 0
je 0x4362d0
mov ecx, dword [esp + 0x30]
cmp dword [esp + 0x18], ecx
je 0x436251
cmp ebx, dword [ebp + 0x18]
jle 0x4362d0
movq xmm0, qword [esp + 0x58]
mov edx, dword [esp + 0x70]
movq qword [edi], xmm0
movq xmm0, qword [esp + 0x60]
movq qword [edi + 8], xmm0
movq xmm0, qword [esp + 0x68]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [esp + 0x70]
movq qword [edi + 0x18], xmm0
movq xmm0, qword [esp + 0x78]
movq qword [edi + 0x20], xmm0
movq xmm0, qword [esp + 0x80]
push edx
lea eax, [esp + 0x3ec]
movq qword [edi + 0x28], xmm0
mov ecx, dword [edi]
push eax
push ecx
call sub.MSVCR80.DLL_memcpy
push 0x1100
lea edx, [esp + 0x2478]
push edx
lea eax, [esi + 0x94]
push eax
call sub.MSVCR80.DLL_memcpy
mov al, byte [esp + 0x2f]
add esp, 0x18
mov byte [esi + 0x1c00], al
mov eax, dword [esi + 0x11e0]
mov edx, dword [esi + 0x11e8]
lea ecx, [eax + eax*4]
add ecx, dword [esi + 0x11f0]
lea eax, [esi + edx*4 + 0x1c0c]
add ecx, ecx
add ecx, ecx
push ecx
push eax
lea ecx, [esi + 0x1c0c]
push ecx
call dword [sym.imp.MSVCR80.DLL_memmove]
add esp, 0xc
cmp dword [esi + 0x1248], 0
je 0x43631d
mov edx, dword [ebp + 0xc]
mov dword [edx], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x11e4]
mov ecx, dword [esp + eax*4 + 0x1d8]
mov dl, byte [esi + 0x129d]
mov dword [esi + 0x11c0], ecx
mov byte [esi + 0x11bd], dl
mov dword [esi + 0x1238], 0
bsr eax, dword [edi + 0x1c]
mov ecx, dword [edi + 0x14]
mov edx, dword [ebp + 0xc]
sub ecx, eax
add ecx, 6
pop edi
sar ecx, 3
pop esi
mov dword [esp + 0x44], eax
mov dword [edx], ecx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret