Function at 0x438124
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 0x4381a9
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 + 0x7be240], eax
add ebp, 0x10000
inc ecx
cmp ecx, edi
jl 0x43817a
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
test ecx, ecx
jle 0x4381da
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 + 0x7ce340], eax
add ebp, 0x10000
inc ebx
cmp ebx, ecx
jl 0x4381b9
mov edi, dword [esp + 0x44]
movzx eax, byte [0x5d9800]
test eax, eax
jne 0x438302
mov byte [0x5d9800], 1
xor edx, edx
fld qword [0x590d98]
fld qword [0x590da0]
fld qword [0x590dd0]
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fmul st(3)
fcom st(2)
fnstsw ax
sahf
ja 0x43822b
fld qword [0x590dc8]
fmul st(1)
fmul st(1)
fsubr st(3)
fld st(1)
fmul st(0)
fmulp st(2)
faddp st(1)
jmp 0x438253
fld qword [0x590db0]
fmul st(1)
fadd qword [0x590da8]
fld qword [0x590db8]
fmul st(2)
fmul st(2)
fsubp st(1)
fld qword [0x590dc0]
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 + 0x5d7ee0]
fldcw word [esp]
inc edx
cmp edx, 0x200
jle 0x438204
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 + 0x5d8700], eax
mov eax, esi
cdq
mov eax, esi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d8b00], eax
mov eax, ebx
cdq
mov eax, ebx
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d8f00], eax
mov eax, edi
cdq
mov eax, edi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d9300], eax
dec esi
dec ecx
dec ebx
dec edi
add ebp, 4
cmp ebp, 0x3fc
jle 0x4382a5
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 0x438759
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 + 0x7be240]
sar edx, 8
add edx, esi
test edx, edx
jge 0x438341
lea ebp, [eax + 1]
cmp edx, ebx
jge 0x438742
inc eax
cmp eax, ecx
jl 0x43832e
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x34], ecx
test ecx, ecx
jle 0x43873b
xor edx, edx
xor eax, eax
mov ebx, dword [eax*4 + 0x7ce340]
sar ebx, 8
add ebx, edi
test ebx, ebx
jge 0x43837f
lea edx, [eax + 1]
cmp ebx, esi
jge 0x438732
inc eax
cmp eax, ecx
jl 0x43836c
test ebp, ebp
jle 0x4383d9
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 [0x5d3480]
add esp, 8
add esi, ebx
inc edi
cmp edi, ebp
jl 0x4383b1
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 0x438449
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 [0x5d3480]
add esp, 8
add ebx, ebp
inc esi
cmp esi, edi
jl 0x43841d
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 0x43872a
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 [0x5d3480]
mov eax, dword [esp + 0x38]
push eax
push ebx
call dword [0x5d3480]
add esp, 0x10
mov ecx, dword [ebp*4 + 0x7be240]
movzx eax, cl
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
cmp edi, edx
jge 0x438715
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 + 0x7ce340]
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 0x43861a
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x60]
mov ecx, dword [ecx + ebx*4 + 0x5d8b00]
mov ebx, dword [ecx*4 + 0x5d7ee0]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [eax + ecx*4 + 0x5d8b00]
imul ebx, dword [ecx*4 + 0x5d7ee0]
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 0x4385a1
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 0x438584
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x68]
test ebp, ebp
jne 0x438668
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 0x43868e
xor ecx, ecx
mov edx, dword [esp + 0x54]
test edx, edx
jge 0x43869c
xor edx, edx
mov dword [esp + 0x54], edx
test ebx, ebx
jge 0x4386a2
xor ebx, ebx
test eax, eax
jge 0x4386a8
xor eax, eax
cmp ecx, 0xff
jle 0x4386b5
mov ecx, 0xff
cmp edx, 0xff
jle 0x4386c6
mov edx, 0xff
mov dword [esp + 0x54], edx
cmp ebx, 0xff
jle 0x4386d3
mov ebx, 0xff
cmp eax, 0xff
jle 0x4386df
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 0x438535
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 0x4384dc
add esp, 0x7c
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x34], eax
jmp 0x43838c
xor edx, edx
jmp 0x43838c
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x24], eax
jmp 0x43835c
xor ebp, ebp
jmp 0x43835c