Function at 0x437920
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 0x4379a5
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 + 0x7b9700], eax
add ebp, 0x10000
inc ecx
cmp ecx, edi
jl 0x437976
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov edi, dword [esp + 0x44]
test ecx, ecx
jle 0x4379d6
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 + 0x7c9800], eax
add ebp, 0x10000
inc ebx
cmp ebx, ecx
jl 0x4379b5
mov edi, dword [esp + 0x44]
movzx eax, byte [0x5d5800]
test eax, eax
jne 0x437afe
mov byte [0x5d5800], 1
xor edx, edx
fld qword [0x58ccf0]
fld qword [0x58ccf8]
fld qword [0x58cd28]
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
fmul st(3)
fcom st(2)
fnstsw ax
sahf
ja 0x437a27
fld qword [0x58cd20]
fmul st(1)
fmul st(1)
fsubr st(3)
fld st(1)
fmul st(0)
fmulp st(2)
faddp st(1)
jmp 0x437a4f
fld qword [0x58cd08]
fmul st(1)
fadd qword [0x58cd00]
fld qword [0x58cd10]
fmul st(2)
fmul st(2)
fsubp st(1)
fld qword [0x58cd18]
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 + 0x5d3ee0]
fldcw word [esp]
inc edx
cmp edx, 0x200
jle 0x437a00
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 + 0x5d4700], eax
mov eax, esi
cdq
mov eax, esi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d4b00], eax
mov eax, ebx
cdq
mov eax, ebx
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d4f00], eax
mov eax, edi
cdq
mov eax, edi
xor eax, edx
sub eax, edx
mov dword [ebp + 0x5d5300], eax
dec esi
dec ecx
dec ebx
dec edi
add ebp, 4
cmp ebp, 0x3fc
jle 0x437aa1
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 0x437f55
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 + 0x7b9700]
sar edx, 8
add edx, esi
test edx, edx
jge 0x437b3d
lea ebp, [eax + 1]
cmp edx, ebx
jge 0x437f3e
inc eax
cmp eax, ecx
jl 0x437b2a
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x34], ecx
test ecx, ecx
jle 0x437f37
xor edx, edx
xor eax, eax
mov ebx, dword [eax*4 + 0x7c9800]
sar ebx, 8
add ebx, edi
test ebx, ebx
jge 0x437b7b
lea edx, [eax + 1]
cmp ebx, esi
jge 0x437f2e
inc eax
cmp eax, ecx
jl 0x437b68
test ebp, ebp
jle 0x437bd5
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 [0x5cf480]
add esp, 8
add esi, ebx
inc edi
cmp edi, ebp
jl 0x437bad
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 0x437c45
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 [0x5cf480]
add esp, 8
add ebx, ebp
inc esi
cmp esi, edi
jl 0x437c19
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 0x437f26
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 [0x5cf480]
mov eax, dword [esp + 0x38]
push eax
push ebx
call dword [0x5cf480]
add esp, 0x10
mov ecx, dword [ebp*4 + 0x7b9700]
movzx eax, cl
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
cmp edi, edx
jge 0x437f11
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 + 0x7c9800]
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 0x437e16
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x60]
mov ecx, dword [ecx + ebx*4 + 0x5d4b00]
mov ebx, dword [ecx*4 + 0x5d3ee0]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [eax + ecx*4 + 0x5d4b00]
imul ebx, dword [ecx*4 + 0x5d3ee0]
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 0x437d9d
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 0x437d80
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x68]
test ebp, ebp
jne 0x437e64
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 0x437e8a
xor ecx, ecx
mov edx, dword [esp + 0x54]
test edx, edx
jge 0x437e98
xor edx, edx
mov dword [esp + 0x54], edx
test ebx, ebx
jge 0x437e9e
xor ebx, ebx
test eax, eax
jge 0x437ea4
xor eax, eax
cmp ecx, 0xff
jle 0x437eb1
mov ecx, 0xff
cmp edx, 0xff
jle 0x437ec2
mov edx, 0xff
mov dword [esp + 0x54], edx
cmp ebx, 0xff
jle 0x437ecf
mov ebx, 0xff
cmp eax, 0xff
jle 0x437edb
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 0x437d31
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 0x437cd8
add esp, 0x7c
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x34], eax
jmp 0x437b88
xor edx, edx
jmp 0x437b88
mov ecx, dword [esp + 0xb0]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x24], eax
jmp 0x437b58
xor ebp, ebp
jmp 0x437b58