Function at 0x43537c
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 0x435401
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 + 0x7e32e0], eax
add ebp, 0x10000
inc ecx
cmp ecx, edi
jl 0x4353d2
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
test ecx, ecx
jle 0x435432
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 + 0x7f33e0], eax
add ebp, 0x10000
inc ebx
cmp ebx, ecx
jl 0x435411
mov edi, dword [esp + 0x44]
movzx eax, byte [0x5c14e0]
test eax, eax
jne 0x43555a
mov byte [0x5c14e0], 1
xor edx, edx
fld qword [0x57ab88]
fld qword [0x57ab90]
fld qword [0x57abc0]
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fmul st(3)
fcom st(2)
fnstsw ax
sahf
ja 0x435483
fld qword [0x57abb8]
fmul st(1)
fmul st(1)
fsubr st(3)
fld st(1)
fmul st(0)
fmulp st(2)
faddp st(1)
jmp 0x4354ab
fld qword [0x57aba0]
fmul st(1)
fadd qword [0x57ab98]
fld qword [0x57aba8]
fmul st(2)
fmul st(2)
fsubp st(1)
fld qword [0x57abb0]
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 + 0x5bfbc0]
fldcw word [esp]
inc edx
cmp edx, 0x200
jle 0x43545c
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 + 0x5c03e0], eax
mov eax, esi
cdq
mov eax, esi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5c07e0], eax
mov eax, ebx
cdq
mov eax, ebx
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5c0be0], eax
mov eax, edi
cdq
mov eax, edi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5c0fe0], eax
dec esi
dec ecx
dec ebx
dec edi
add ebp, 4
cmp ebp, 0x3fc
jle 0x4354fd
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 0x4359b1
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 + 0x7e32e0]
sar edx, 8
add edx, esi
test edx, edx
jge 0x435599
lea ebp, [eax + 1]
cmp edx, ebx
jge 0x43599a
inc eax
cmp eax, ecx
jl 0x435586
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x34], ecx
test ecx, ecx
jle 0x435993
xor edx, edx
xor eax, eax
mov ebx, dword [eax*4 + 0x7f33e0]
sar ebx, 8
add ebx, edi
test ebx, ebx
jge 0x4355d7
lea edx, [eax + 1]
cmp ebx, esi
jge 0x43598a
inc eax
cmp eax, ecx
jl 0x4355c4
test ebp, ebp
jle 0x435631
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 [0x5b9a60]
add esp, 8
add esi, ebx
inc edi
cmp edi, ebp
jl 0x435609
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 0x4356a1
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 [0x5b9a60]
add esp, 8
add ebx, ebp
inc esi
cmp esi, edi
jl 0x435675
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 0x435982
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 [0x5b9a60]
mov eax, dword [esp + 0x38]
push eax
push ebx
call dword [0x5b9a60]
add esp, 0x10
mov ecx, dword [ebp*4 + 0x7e32e0]
movzx eax, cl
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
cmp edi, edx
jge 0x43596d
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 + 0x7f33e0]
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 0x435872
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x60]
mov ecx, dword [ecx + ebx*4 + 0x5c07e0]
mov ebx, dword [ecx*4 + 0x5bfbc0]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [eax + ecx*4 + 0x5c07e0]
imul ebx, dword [ecx*4 + 0x5bfbc0]
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 0x4357f9
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 0x4357dc
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x68]
test ebp, ebp
jne 0x4358c0
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 0x4358e6
xor ecx, ecx
mov edx, dword [esp + 0x54]
test edx, edx
jge 0x4358f4
xor edx, edx
mov dword [esp + 0x54], edx
test ebx, ebx
jge 0x4358fa
xor ebx, ebx
test eax, eax
jge 0x435900
xor eax, eax
cmp ecx, 0xff
jle 0x43590d
mov ecx, 0xff
cmp edx, 0xff
jle 0x43591e
mov edx, 0xff
mov dword [esp + 0x54], edx
cmp ebx, 0xff
jle 0x43592b
mov ebx, 0xff
cmp eax, 0xff
jle 0x435937
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 0x43578d
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 0x435734
add esp, 0x7c
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x34], eax
jmp 0x4355e4
xor edx, edx
jmp 0x4355e4
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x24], eax
jmp 0x4355b4
xor ebp, ebp
jmp 0x4355b4