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

Disassembly:
sub esp, 0x4c
push ebx
mov ebx, dword [esp + 0x58]
push ebp
push esi
mov dword [esp + 0x10], ecx
xor ecx, ecx
lea esi, [ebx*4]
mov eax, esi
mov edx, 4
mul edx
seto cl
push edi
neg ecx
or ecx, eax
push ecx
call fcn.00452d7b
mov dword [esp + 0x30], eax
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00452d7b
fld qword [0x485428]
add esp, 8
test ebx, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], 0
jle 0x43bc8b
fild dword [esp + 0x70]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x40], ecx
fstp dword [esp + 0x4c]
mov esi, eax
fild dword [esp + 0x64]
fstp dword [esp + 0x48]
jmp 0x43bbb6
fld qword [0x485428]
fild dword [esp + 0x18]
sub esp, 8
fadd st(1)
fmul dword [esp + 0x54]
fdiv dword [esp + 0x50]
fsubrp st(1)
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp qword [esp]
call fcn.004530b0
fstp dword [esp + 0x4c]
add esp, 8
fld dword [esp + 0x44]
call fcn.00453610
fld dword [esp + 0x28]
mov ebp, eax
mov dword [esp + 0x44], ebp
fisub dword [esp + 0x44]
or edi, 0xffffffff
mov dword [esp + 0x1c], edi
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
lea eax, [edi + ebp]
test eax, eax
jge 0x43bc15
mov dword [esi], 0
jmp 0x43bc26
mov ecx, dword [esp + 0x70]
cmp eax, ecx
jge 0x43bc21
mov dword [esi], eax
jmp 0x43bc26
add ecx, 0xffffffff
mov dword [esi], ecx
cmp byte [esp + 0x78], 0
fisubr dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x18]
je 0x43bc48
fstp dword [esp + 0x48]
fld dword [esp + 0x48]
fstp dword [esp]
call fcn.0043ba90
jmp 0x43bc58
fstp dword [esp + 0x48]
fld dword [esp + 0x48]
fstp dword [esp]
call fcn.0043b9a0
mov eax, dword [esp + 0x40]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
add edi, 1
fstp dword [eax + esi]
add esi, 4
cmp edi, 2
mov dword [esp + 0x1c], edi
jle 0x43bc02
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, ebx
mov dword [esp + 0x18], eax
jl 0x43bbb0
jmp 0x43bc8d
fstp st(0)
mov edi, dword [esp + 0x68]
xor ecx, ecx
lea esi, [edi*4]
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00452d7b
mov ebp, eax
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
mov dword [esp + 0x48], ebp
neg ecx
or ecx, eax
push ecx
call fcn.00452d7b
add esp, 8
test edi, edi
mov esi, eax
mov dword [esp + 0x48], esi
mov dword [esp + 0x18], 0
jle 0x43c2c2
fild dword [esp + 0x74]
sub ebp, esi
mov dword [esp + 0x38], ebp
fstp dword [esp + 0x4c]
fild dword [esp + 0x68]
fstp dword [esp + 0x40]
lea ecx, [ecx]
fild dword [esp + 0x18]
sub esp, 8
fld qword [0x485428]
fadd st(1), st(0)
fld dword [esp + 0x54]
fmulp st(2)
fld dword [esp + 0x48]
fdivp st(2)
fsubp st(1)
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp qword [esp]
call fcn.004530b0
fstp dword [esp + 0x44]
add esp, 8
fld dword [esp + 0x3c]
call fcn.00453610
fld dword [esp + 0x28]
mov ecx, dword [esp + 0x6c]
mov ebx, eax
lea edi, [ebx*4 - 4]
imul edi, dword [esp + 0x70]
mov dword [esp + 0x3c], ebx
or ebp, 0xffffffff
mov dword [esp + 0x1c], ebp
fisub dword [esp + 0x3c]
add edi, ecx
fstp dword [esp + 0x28]
jmp 0x43bd74
mov ecx, dword [esp + 0x6c]
fld dword [esp + 0x28]
lea eax, [ebx + ebp]
test eax, eax
jge 0x43bd83
mov dword [esi], ecx
jmp 0x43bd9c
mov edx, dword [esp + 0x74]
cmp eax, edx
jge 0x43bd8f
mov dword [esi], edi
jmp 0x43bd9c
add edx, 0xffffffff
imul edx, dword [esp + 0x70]
lea eax, [ecx + edx*4]
mov dword [esi], eax
cmp byte [esp + 0x78], 0
fisubr dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x18]
je 0x43bdbe
fstp dword [esp + 0x40]
fld dword [esp + 0x40]
fstp dword [esp]
call fcn.0043ba90
jmp 0x43bdce
fstp dword [esp + 0x40]
fld dword [esp + 0x40]
fstp dword [esp]
call fcn.0043b9a0
mov eax, dword [esp + 0x70]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
add eax, eax
fstp dword [ecx + esi]
add eax, eax
add ebp, 1
add edi, eax
add esi, 4
cmp ebp, 2
mov dword [esp + 0x1c], ebp
jle 0x43bd70
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x68]
mov dword [esp + 0x18], eax
jl 0x43bd00
mov edi, dword [esp + 0x68]
test edi, edi
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
jle 0x43c2c2
mov eax, dword [esp + 0x60]
fldz
fld qword [0x4853e8]
mov dword [esp + 0x24], eax
mov eax, esi
mov edx, ebp
sub eax, ebp
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x4c], edi
mov ecx, 0x10
test ebx, ebx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x38], eax
jle 0x43c2a2
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
lea eax, [esi + 0xc]
mov dword [esp + 0x20], esi
lea edi, [ecx + 4]
sub esi, ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x54], esi
mov dword [esp + 0x40], ebx
jmp 0x43be88
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
fxch st(1)
mov ecx, dword [ecx]
fst dword [esp + 0x78]
mov edi, dword [esp + 0x30]
fst dword [esp + 0x70]
mov edi, dword [edi + edx]
fst dword [esp + 0x68]
mov ebp, dword [eax]
fst dword [esp + 0x6c]
lea ebx, [edi + ecx*4]
mov edi, dword [esp + 0x10]
mov esi, dword [esi + edi]
mov ecx, dword [eax - 0xc]
mov edi, dword [eax - 4]
mov eax, dword [ebx]
add ecx, ecx
add esi, esi
add edi, edi
add ebp, ebp
add ecx, ecx
add esi, esi
add edi, edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x74], 0
add ebp, ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], 4
fld dword [edx]
mov eax, dword [esp + 0x30]
mov eax, dword [eax + edx]
mov edx, dword [esp + 0x10]
fmul dword [edx - 4]
mov edx, dword [ecx + eax]
xor edx, dword [esp + 0x18]
or dword [esp + 0x74], edx
fstp dword [esp + 0x60]
movzx edx, byte [ecx + eax]
mov dword [esp + 0x58], edx
movzx edx, byte [ecx + eax + 1]
fild dword [esp + 0x58]
fld dword [esp + 0x60]
mov dword [esp + 0x60], edx
fld st(0)
movzx edx, byte [ecx + eax + 2]
fmulp st(2)
fld dword [esp + 0x78]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
movzx edx, byte [ecx + eax + 3]
fmul st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x70]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x14]
fmul st(1)
fadd dword [esp + 0x68]
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fmulp st(1)
fadd dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [edx]
mov edx, dword [esp + 0x10]
fmul dword [edx]
mov edx, dword [eax + esi]
xor edx, dword [esp + 0x18]
or dword [esp + 0x74], edx
fstp dword [esp + 0x60]
movzx edx, byte [eax + esi]
mov dword [esp + 0x58], edx
movzx edx, byte [eax + esi + 1]
fild dword [esp + 0x58]
fld dword [esp + 0x60]
mov dword [esp + 0x60], edx
fld st(0)
movzx edx, byte [eax + esi + 2]
fmulp st(2)
fld dword [esp + 0x78]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
movzx edx, byte [eax + esi + 3]
fmul st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x70]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x14]
fmul st(1)
fadd dword [esp + 0x68]
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fmulp st(1)
fadd dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [edx]
mov edx, dword [esp + 0x10]
fmul dword [edx + 4]
mov edx, dword [eax + edi]
xor edx, dword [esp + 0x18]
or dword [esp + 0x74], edx
fstp dword [esp + 0x60]
movzx edx, byte [eax + edi]
mov dword [esp + 0x58], edx
movzx edx, byte [eax + edi + 1]
fild dword [esp + 0x58]
fld dword [esp + 0x60]
mov dword [esp + 0x60], edx
fld st(0)
movzx edx, byte [eax + edi + 2]
fmulp st(2)
fld dword [esp + 0x78]
mov ebx, dword [esp + 0x74]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
movzx edx, byte [eax + edi + 3]
fmul st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x70]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x14]
fmul st(1)
fadd dword [esp + 0x68]
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fmulp st(1)
fadd dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [edx]
mov edx, dword [esp + 0x10]
fmul dword [edx + 8]
mov edx, dword [eax + ebp]
xor edx, dword [esp + 0x18]
fstp dword [esp + 0x60]
or ebx, edx
movzx edx, byte [eax + ebp]
mov dword [esp + 0x58], edx
movzx edx, byte [eax + ebp + 1]
fild dword [esp + 0x58]
fld dword [esp + 0x60]
mov dword [esp + 0x60], edx
fld st(0)
movzx edx, byte [eax + ebp + 2]
fmulp st(2)
fld dword [esp + 0x78]
movzx eax, byte [eax + ebp + 3]
faddp st(2)
fxch st(1)
mov dword [esp + 0x74], ebx
fstp dword [esp + 0x78]
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x14]
add edx, 4
sub dword [esp + 0x34], 1
fmul st(1)
mov dword [esp + 0x14], edx
fadd dword [esp + 0x70]
fstp dword [esp + 0x70]
fild dword [esp + 0x60]
mov dword [esp + 0x60], eax
fmul st(1)
fadd dword [esp + 0x68]
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fmulp st(1)
fadd dword [esp + 0x6c]
fstp dword [esp + 0x6c]
jne 0x43bee7
test bl, bl
je 0x43c153
fld dword [esp + 0x78]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x43c120
fstp st(0)
xor al, al
jmp 0x43c159
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x43c12f
fstp st(0)
or al, 0xff
jmp 0x43c159
fnstcw word [esp + 0x78]
movzx eax, word [esp + 0x78]
or eax, 0xc00
mov dword [esp + 0x74], eax
fldcw word [esp + 0x74]
fistp dword [esp + 0x74]
mov al, byte [esp + 0x74]
fldcw word [esp + 0x78]
jmp 0x43c159
mov ecx, dword [esp + 0x1c]
mov al, byte [ecx]
test ebx, 0xff00
mov ecx, dword [esp + 0x38]
mov byte [ecx], al
je 0x43c1ad
fld dword [esp + 0x70]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x43c17a
fstp st(0)
xor al, al
jmp 0x43c1b4
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x43c189
fstp st(0)
or al, 0xff
jmp 0x43c1b4
fnstcw word [esp + 0x78]
movzx eax, word [esp + 0x78]
or eax, 0xc00
mov dword [esp + 0x70], eax
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
mov al, byte [esp + 0x70]
fldcw word [esp + 0x78]
jmp 0x43c1b4
mov edx, dword [esp + 0x1c]
mov al, byte [edx + 1]
test ebx, 0xff0000
mov byte [ecx + 1], al
je 0x43c205
fld dword [esp + 0x68]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x43c1d2
fstp st(0)
xor al, al
jmp 0x43c20c
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x43c1e1
fstp st(0)
or al, 0xff
jmp 0x43c20c
fnstcw word [esp + 0x78]
movzx eax, word [esp + 0x78]
or eax, 0xc00
mov dword [esp + 0x70], eax
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
mov al, byte [esp + 0x70]
fldcw word [esp + 0x78]
jmp 0x43c20c
mov eax, dword [esp + 0x1c]
mov al, byte [eax + 2]
test ebx, 0xff000000
mov byte [ecx + 2], al
je 0x43c25d
fld dword [esp + 0x6c]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x43c22a
fstp st(0)
xor al, al
jmp 0x43c264
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x43c239
fstp st(0)
or al, 0xff
jmp 0x43c264
fnstcw word [esp + 0x78]
movzx eax, word [esp + 0x78]
or eax, 0xc00
mov dword [esp + 0x70], eax
fldcw word [esp + 0x70]
fistp dword [esp + 0x70]
mov al, byte [esp + 0x70]
fldcw word [esp + 0x78]
jmp 0x43c264
mov edx, dword [esp + 0x1c]
mov al, byte [edx + 3]
mov edx, dword [esp + 0x28]
fxch st(1)
mov byte [ecx + 3], al
mov eax, dword [esp + 0x3c]
add ecx, 4
mov dword [esp + 0x38], ecx
mov ecx, 0x10
add dword [esp + 0x20], ecx
add dword [esp + 0x10], ecx
add eax, ecx
sub dword [esp + 0x40], 1
mov dword [esp + 0x3c], eax
jne 0x43be84
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
lea eax, [ebx*4]
add dword [esp + 0x24], eax
add edx, ecx
sub dword [esp + 0x4c], 1
mov dword [esp + 0x28], edx
jne 0x43be4e
fstp st(1)
fstp st(0)
mov eax, dword [esp + 0x2c]
push eax
call fcn.00452d18
mov ecx, dword [esp + 0x54]
push ecx
call fcn.00452d18
push ebp
call fcn.00452d18
push esi
call fcn.00452d18
add esp, 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x4c
ret 0x1c
mov eax, dword [esp + 0x1c]
cmp eax, 5
ja case.default.0x43cbad
jmp dword [eax*4 + 0x43cc68]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
push edx
call fcn.0043b100
ret 0x1c
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
push edx
call fcn.0043b2b0
ret 0x1c
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
push edx
call fcn.0043b700
ret 0x1c
mov dword [esp + 0x1c], 0
jmp 0x43bb20
mov dword [esp + 0x1c], 1
jmp 0x43bb20
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x14]
push eax
push edx
call fcn.0043c300
ret 0x1c