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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push edi
push esi
push ebx
sub esp, 0x9c
mov edi, ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x60], eax
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x28]
mov ebx, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x1c]
sub ecx, dword [ebp + 0x14]
inc ecx
mov eax, dword [ebp + 0x18]
sub eax, edi
inc eax
test ebx, ebx
jle 0x4311c7
xor ebx, ebx
mov dword [esp + 0x30], ebx
xor ebx, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x84], edi
mov esi, dword [esp + 0x30]
mov edi, dword [ebp + 0x2c]
mov eax, ebx
cdq
idiv edi
imul eax, ecx
sar eax, 8
mov dword [esi*4 + 0x797400], eax
add ebx, 0x10000
inc esi
cmp esi, edi
jl 0x431199
mov eax, dword [esp + 0x28]
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
test esi, esi
jle 0x4311ff
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x84], edi
mov edi, eax
mov eax, ecx
cdq
idiv esi
imul eax, edi
sar eax, 8
mov dword [ebx*4 + 0x7a7500], eax
add ecx, 0x10000
inc ebx
cmp ebx, esi
jl 0x4311d8
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
movzx eax, byte [0x5b6dc0]
test eax, eax
jne 0x43133a
mov byte [0x5b6dc0], 1
xor ecx, ecx
fld qword [0x56f478]
fld qword [0x56f4b0]
fld qword [0x56f480]
mov dword [esp + 0x50], ecx
fild dword [esp + 0x50]
fmul st(3)
fcom st(1)
fnstsw ax
sahf
ja 0x431250
fld qword [0x56f4a8]
fmul st(1)
fmul st(1)
fsubr st(2)
fld st(1)
fmul st(0)
fmulp st(2)
faddp st(1)
jmp 0x431278
fld qword [0x56f490]
fmul st(1)
fadd qword [0x56f488]
fld qword [0x56f498]
fmul st(2)
fmul st(2)
fsubp st(1)
fld qword [0x56f4a0]
fmul st(2)
fmul st(2)
fmulp st(2)
faddp st(1)
fmul st(2)
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [ecx*4 + 0x5b54a0]
fldcw word [esp + 8]
inc ecx
cmp ecx, 0x200
jle 0x431229
fstp st(0)
fstp st(0)
fstp st(0)
xor eax, eax
mov ebx, 0xffffff00
mov ecx, 0x100
mov dword [esp + 0x20], ecx
mov ecx, 0x200
mov dword [esp + 0x80], ecx
xor ecx, ecx
mov dword [esp + 0x84], edi
mov esi, eax
mov eax, ebx
cdq
mov edi, ebx
xor edi, edx
sub edi, edx
mov dword [ecx + 0x5b5cc0], edi
mov eax, esi
cdq
mov edi, esi
xor edi, edx
sub edi, edx
mov dword [ecx + 0x5b60c0], edi
mov edi, dword [esp + 0x20]
mov eax, edi
cdq
mov eax, edi
xor eax, edx
sub eax, edx
mov dword [ecx + 0x5b64c0], eax
mov eax, dword [esp + 0x80]
cdq
xor eax, edx
sub eax, edx
mov dword [ecx + 0x5b68c0], eax
dec esi
dec ebx
dec edi
mov dword [esp + 0x20], edi
dec dword [esp + 0x80]
add ecx, 4
cmp ecx, 0x3fc
jle 0x4312d1
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x18], eax
test eax, eax
jle 0x43184e
xor eax, eax
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x84], edi
mov ecx, dword [esp + 0x28]
mov edi, dword [ebp + 0x2c]
mov ebx, dword [ebp + 0x24]
mov esi, dword [ebp + 0x14]
mov edx, dword [eax*4 + 0x797400]
sar edx, 8
add edx, esi
test edx, edx
jge 0x431378
lea ecx, [eax + 1]
cmp edx, ebx
jge 0x431834
inc eax
cmp eax, edi
jl 0x431365
mov dword [esp + 0x28], ecx
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
mov dword [esp + 0x34], esi
test esi, esi
jle 0x43182d
xor eax, eax
xor ecx, ecx
mov ebx, dword [ecx*4 + 0x7a7500]
sar ebx, 8
add ebx, edi
test ebx, ebx
jge 0x4313b9
lea eax, [ecx + 1]
cmp ebx, edx
jge 0x431824
inc ecx
cmp ecx, esi
jl 0x4313a6
mov ebx, dword [esp + 0x28]
test ebx, ebx
jle 0x431419
xor ebx, ebx
mov dword [esp + 0x30], ebx
lea ebx, [esi + esi]
add ebx, ebx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x84], edi
mov esi, ecx
mov edi, dword [esp + 0x30]
push ebx
push esi
call dword [0x5b1480]
add esp, 8
add esi, ebx
inc edi
mov eax, dword [esp + 0x28]
cmp edi, eax
jl 0x4313f2
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x38], ebx
mov ecx, dword [ebp + 0x2c]
cmp ebx, ecx
jge 0x431473
lea ecx, [esi + esi]
add ecx, ecx
mov dword [esp + 0x24], ecx
imul ebx, ecx
add ebx, dword [esp + 0x60]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x84], edi
mov esi, ecx
mov edi, dword [esp + 0x38]
push esi
push ebx
call dword [0x5b1480]
add esp, 8
add ebx, esi
inc edi
mov eax, dword [ebp + 0x2c]
cmp edi, eax
jl 0x43144d
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
cmp ebx, ecx
jge 0x431817
mov dword [esp + 0x84], edi
mov dword [esp + 0x14], eax
lea ecx, [esi + esi]
add ecx, ecx
mov dword [esp + 0x1c], ecx
lea edi, [eax + eax]
add edi, edi
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0x34]
lea ebx, [ecx + ecx]
add ebx, ebx
mov eax, dword [esp + 0x60]
add ebx, eax
sub esi, ecx
add esi, esi
add esi, esi
mov dword [esp + 0x24], esi
lea ecx, [edx + edx]
add ecx, ecx
mov edx, dword [ebp + 0x14]
imul edx, ecx
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0x24]
imul edx, ecx
dec edx
mov dword [esp + 0x94], edx
mov edi, dword [esp + 0x28]
mov esi, edi
mov edx, dword [esp + 0x1c]
imul esi, edx
add esi, eax
mov dword [esp + 0x38], esi
imul edi, edx
add edi, ebx
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x84], edi
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
push eax
mov edx, dword [esp + 0x3c]
push edx
call dword [0x5b1480]
mov eax, dword [esp + 0x2c]
push eax
push ebx
call dword [0x5b1480]
add esp, 0x10
mov ecx, dword [esi*4 + 0x797400]
movzx eax, cl
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
cmp edi, edx
jge 0x431800
sar ecx, 8
imul ecx, dword [esp + 0x88]
add ecx, dword [esp + 0x30]
fld qword [0x56f478]
fld qword [0x56f4b0]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], esi
fstp st(0)
fstp st(0)
mov ebx, dword [esp + 0x40]
mov edi, dword [ebx*4 + 0x7a7500]
mov ebx, edi
and ebx, 0xff
xor esi, esi
xor ecx, ecx
mov dword [esp + 0x6c], ecx
xor eax, eax
mov dword [esp + 0x70], eax
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x68], edx
mov eax, 0xfffffffe
sar edi, 8
mov edx, dword [esp + 0x88]
lea edx, [edx + edx]
neg edx
add edx, dword [esp + 0x3c]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov ecx, dword [esp + 0x84]
lea esi, [ecx + edi - 2]
mov ebx, 0xfffffe00
mov dword [esp + 0x98], edx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x90], eax
lea edi, [esi + esi]
add edi, edi
add edi, dword [esp + 0x98]
mov eax, dword [esp + 0x94]
cmp edi, eax
ja 0x431702
mov eax, ebx
sub eax, dword [esp + 0x74]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fld qword [0x56f478]
fmul st(1), st(0)
mov eax, dword [esp + 0x90]
shl eax, 8
sub eax, dword [esp + 0x60]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fmulp st(1)
fstp qword [esp + 0x58]
call fcn.00431860
fmul qword [0x56f4b0]
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x48]
fldcw word [esp + 8]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x80], eax
fld qword [esp + 0x58]
call fcn.00431860
fmul qword [0x56f4b0]
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x48]
fldcw word [esp + 8]
mov edx, dword [esp + 0x48]
imul edx, dword [esp + 0x80]
add dword [esp + 0x78], edx
mov eax, dword [esp + 0x64]
movzx ecx, byte [edi + eax]
imul ecx, edx
add dword [esp + 0x7c], ecx
movzx ecx, byte [edi + eax + 1]
imul ecx, edx
add dword [esp + 0x70], ecx
movzx ecx, byte [edi + eax + 2]
imul ecx, edx
add dword [esp + 0x6c], ecx
movzx edi, byte [edi + eax + 3]
imul edi, edx
add dword [esp + 0x68], edi
inc esi
add ebx, 0x100
cmp ebx, 0x200
jle 0x431607
mov edx, dword [esp + 0x98]
mov edi, dword [esp + 0x8c]
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x84]
add edx, dword [esp + 0x88]
inc eax
cmp eax, 2
jle 0x4315e9
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
test esi, esi
jne 0x431753
mov esi, 1
mov eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [esp + 0x70]
cdq
idiv esi
mov ebx, eax
mov eax, dword [esp + 0x6c]
cdq
idiv esi
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
cdq
idiv esi
test ecx, ecx
jge 0x43177b
xor ecx, ecx
test ebx, ebx
jge 0x431781
xor ebx, ebx
mov edx, dword [esp + 0x70]
test edx, edx
jge 0x43178f
xor edx, edx
mov dword [esp + 0x70], edx
test eax, eax
jge 0x431795
xor eax, eax
cmp ecx, 0xff
jle 0x4317a2
mov ecx, 0xff
cmp ebx, 0xff
jle 0x4317af
mov ebx, 0xff
cmp edx, 0xff
jle 0x4317c0
mov edx, 0xff
mov dword [esp + 0x70], edx
cmp eax, 0xff
jle 0x4317cc
mov eax, 0xff
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
mov byte [edx + esi*4], cl
mov byte [edx + esi*4 + 1], bl
mov ecx, dword [esp + 0x70]
mov byte [edx + esi*4 + 2], cl
mov byte [edx + esi*4 + 3], al
inc esi
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x34]
cmp esi, eax
jl 0x431595
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x38], eax
add ebx, eax
inc esi
mov edx, dword [esp + 0x18]
cmp esi, edx
jl 0x431529
add esp, 0x9c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x34], ecx
jmp 0x4313c6
xor eax, eax
jmp 0x4313c6
mov dword [esp + 0x28], ecx
mov esi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x84]
mov dword [esp + 0x18], eax
jmp 0x431396
xor eax, eax
mov dword [esp + 0x28], eax
jmp 0x431396