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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x7c
mov edi, ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0xa8]
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov eax, dword [esp + 0xa4]
sub eax, dword [esp + 0x9c]
inc eax
mov ebx, dword [esp + 0xa0]
sub ebx, edi
inc ebx
test edx, edx
jle 0x4353dd
xor edx, edx
xor ebp, ebp
mov dword [esp + 0x44], edi
mov esi, eax
mov ecx, edx
mov edi, dword [esp + 0xb4]
mov eax, ebp
cdq
idiv edi
imul eax, esi
sar eax, 8
mov dword [ecx*4 + 0x7e1d20], eax
add ebp, 0x10000
inc ecx
cmp ecx, edi
jl 0x4353ae
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
test ecx, ecx
jle 0x43540e
xor eax, eax
xor ebp, ebp
mov dword [esp + 0x44], edi
mov edi, ebx
mov ebx, eax
mov eax, ebp
cdq
idiv ecx
imul eax, edi
sar eax, 8
mov dword [ebx*4 + 0x7f1e20], eax
add ebp, 0x10000
inc ebx
cmp ebx, ecx
jl 0x4353ed
mov edi, dword [esp + 0x44]
movzx eax, byte [0x5c0040]
test eax, eax
jne 0x435536
mov byte [0x5c0040], 1
xor edx, edx
fld qword [0x579bb0]
fld qword [0x579bb8]
fld qword [0x579be8]
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fmul st(3)
fcom st(2)
fnstsw ax
sahf
ja 0x43545f
fld qword [0x579be0]
fmul st(1)
fmul st(1)
fsubr st(3)
fld st(1)
fmul st(0)
fmulp st(2)
faddp st(1)
jmp 0x435487
fld qword [0x579bc8]
fmul st(1)
fadd qword [0x579bc0]
fld qword [0x579bd0]
fmul st(2)
fmul st(2)
fsubp st(1)
fld qword [0x579bd8]
fmul st(2)
fmul st(2)
fmulp st(2)
faddp st(1)
fmul st(1)
fnstcw word [esp]
movzx eax, word [esp]
or eax, 0xc00
mov dword [esp + 8], eax
fldcw word [esp + 8]
fistp dword [edx*4 + 0x5be720]
fldcw word [esp]
inc edx
cmp edx, 0x200
jle 0x435438
fstp st(0)
fstp st(0)
fstp st(0)
xor edx, edx
mov eax, 0xffffff00
mov ebx, 0x100
mov ebp, 0x200
mov dword [esp + 0x2c], ebp
xor ebp, ebp
mov dword [esp + 0x44], edi
mov ecx, eax
mov esi, edx
mov edi, dword [esp + 0x2c]
mov eax, ecx
cdq
mov eax, ecx
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5bef40], eax
mov eax, esi
cdq
mov eax, esi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5bf340], eax
mov eax, ebx
cdq
mov eax, ebx
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5bf740], eax
mov eax, edi
cdq
mov eax, edi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5bfb40], eax
dec esi
dec ecx
dec ebx
dec edi
add ebp, 4
cmp ebp, 0x3fc
jle 0x4354d9
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x24], eax
test eax, eax
jle 0x43598d
xor ebp, ebp
xor eax, eax
mov ecx, dword [esp + 0xb4]
mov ebx, dword [esp + 0xac]
mov esi, dword [esp + 0x9c]
mov edx, dword [eax*4 + 0x7e1d20]
sar edx, 8
add edx, esi
test edx, edx
jge 0x435575
lea ebp, [eax + 1]
cmp edx, ebx
jge 0x435976
inc eax
cmp eax, ecx
jl 0x435562
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x34], ecx
test ecx, ecx
jle 0x43596f
xor edx, edx
xor eax, eax
mov ebx, dword [eax*4 + 0x7f1e20]
sar ebx, 8
add ebx, edi
test ebx, ebx
jge 0x4355b3
lea edx, [eax + 1]
cmp ebx, esi
jge 0x435966
inc eax
cmp eax, ecx
jl 0x4355a0
test ebp, ebp
jle 0x43560d
xor ebx, ebx
mov dword [esp + 0x78], ebx
lea ebx, [ecx + ecx]
add ebx, ebx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x44], edi
mov esi, eax
mov edi, dword [esp + 0x78]
push ebx
push esi
call dword [0x5b85a0]
add esp, 8
add esi, ebx
inc edi
cmp edi, ebp
jl 0x4355e5
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0xb4]
cmp eax, ebx
jge 0x43567d
lea eax, [ecx + ecx]
add eax, eax
mov dword [esp + 0x78], eax
mov ebx, dword [esp + 0x30]
imul ebx, eax
add ebx, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x44], edi
mov ebp, eax
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0xb4]
push ebp
push ebx
call dword [0x5b85a0]
add esp, 8
add ebx, ebp
inc esi
cmp esi, edi
jl 0x435651
mov edx, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
cmp ebp, eax
jge 0x43595e
mov dword [esp + 0x44], edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edx
lea eax, [ecx + ecx]
add eax, eax
lea edx, [edx + edx]
add edx, edx
mov dword [esp + 0x2c], edx
mov edi, dword [esp + 0x34]
lea ebx, [edi + edi]
add ebx, ebx
mov edx, dword [esp + 0x14]
add ebx, edx
sub ecx, edi
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x30], ecx
lea ecx, [esi + esi]
add ecx, ecx
mov esi, dword [esp + 0x9c]
imul esi, ecx
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0xac]
imul esi, ecx
dec esi
mov dword [esp + 0x78], esi
mov esi, ebp
imul esi, eax
add esi, edx
mov dword [esp + 0x38], esi
mov edx, ebp
imul edx, eax
add edx, ebx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x44], edi
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
push eax
push esi
call dword [0x5b85a0]
mov eax, dword [esp + 0x38]
push eax
push ebx
call dword [0x5b85a0]
add esp, 0x10
mov ecx, dword [ebp*4 + 0x7e1d20]
movzx eax, cl
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
cmp edi, edx
jge 0x435949
sar ecx, 8
imul ecx, dword [esp + 0x4c]
add ecx, dword [esp + 0x1c]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x38], esi
mov dword [esp + 0x18], ebp
mov edx, dword [esp + 0x3c]
mov edi, dword [edx*4 + 0x7f1e20]
mov edx, edi
and edx, 0xff
xor ebp, ebp
xor eax, eax
mov dword [esp + 0x6c], eax
xor ecx, ecx
mov dword [esp + 0x70], ecx
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x64], ebx
sar edi, 8
mov esi, dword [esp + 0x4c]
neg esi
add esi, dword [esp + 0x40]
mov ebx, 0xfffffc00
mov dword [esp + 0x54], eax
mov dword [esp + 0x68], ebp
mov dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x44]
lea edx, [ebp + edi - 1]
mov eax, 0xfffffc00
mov dword [esp + 0x58], ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0x50], edi
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x48]
lea ebp, [edx + edx]
add ebp, ebp
add ebp, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
ja 0x43584e
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x60]
mov ecx, dword [ecx + ebx*4 + 0x5bf340]
mov ebx, dword [ecx*4 + 0x5be720]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [eax + ecx*4 + 0x5bf340]
imul ebx, dword [ecx*4 + 0x5be720]
mov ecx, ebx
sar ecx, 7
shr ecx, 0x18
add ecx, ebx
sar ecx, 8
add dword [esp + 0x68], ecx
movzx ebx, byte [ebp + edi]
imul ebx, ecx
add esi, ebx
movzx ebx, byte [ebp + edi + 1]
imul ebx, ecx
add dword [esp + 0x70], ebx
movzx ebx, byte [ebp + edi + 2]
imul ebx, ecx
add dword [esp + 0x6c], ebx
movzx ebp, byte [ebp + edi + 3]
imul ebp, ecx
add dword [esp + 0x64], ebp
inc edx
add eax, 0x400
cmp eax, 0x800
jle 0x4357d5
mov dword [esp + 0x54], esi
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x44]
add esi, ecx
add ebx, 0x400
cmp ebx, 0x800
jle 0x4357b8
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x68]
test ebp, ebp
jne 0x43589c
mov ebp, 1
cdq
idiv ebp
mov ecx, eax
mov eax, dword [esp + 0x70]
cdq
idiv ebp
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x6c]
cdq
idiv ebp
mov ebx, eax
mov eax, dword [esp + 0x64]
cdq
idiv ebp
test ecx, ecx
jge 0x4358c2
xor ecx, ecx
mov edx, dword [esp + 0x54]
test edx, edx
jge 0x4358d0
xor edx, edx
mov dword [esp + 0x54], edx
test ebx, ebx
jge 0x4358d6
xor ebx, ebx
test eax, eax
jge 0x4358dc
xor eax, eax
cmp ecx, 0xff
jle 0x4358e9
mov ecx, 0xff
cmp edx, 0xff
jle 0x4358fa
mov edx, 0xff
mov dword [esp + 0x54], edx
cmp ebx, 0xff
jle 0x435907
mov ebx, 0xff
cmp eax, 0xff
jle 0x435913
mov eax, 0xff
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
mov byte [edx + ebp*4], cl
mov ecx, dword [esp + 0x54]
mov byte [edx + ebp*4 + 1], cl
mov byte [edx + ebp*4 + 2], bl
mov byte [edx + ebp*4 + 3], al
inc ebp
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x34]
cmp ebp, eax
jl 0x435769
mov ebx, dword [esp + 0x14]
mov esi, edx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
add esi, eax
add ebx, eax
inc ebp
mov edx, dword [esp + 0x24]
cmp ebp, edx
jl 0x435710
add esp, 0x7c
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x34], eax
jmp 0x4355c0
xor edx, edx
jmp 0x4355c0
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x24], eax
jmp 0x435590
xor ebp, ebp
jmp 0x435590