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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov eax, dword [0xbcbae0]
xor eax, ebp
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], 1
movzx eax, byte [edx]
fldz
fldz
mov al, byte [eax + 0xb43558]
add al, 0xd5
cmp al, 0x4c
ja case.0x837701.212
mov edi, dword [ebp + 8]
movzx eax, al
fstp st(1)
fstp st(0)
fldz
mov esi, edx
mov ebx, ecx
fldz
jmp dword [eax*4 + 0xb51a2c]
mov edx, 0x7fe040
fstp st(1)
fstp st(0)
xor eax, eax
not edx
and edx, 1
mov ecx, edx
add ecx, 0x7fe040
movzx ecx, byte [0xbb5edb]
setne al
bt ecx, eax
jb 0x83782f
mov al, byte [0xbb5edb]
mov ecx, edx
mov ah, 1
add ecx, 0x7fe040
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5edb], ah
jne 0x837738
mov ecx, 0x7fe040
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, 0x7fe040
setne dl
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x837797
mov edx, ecx
xor eax, eax
add edx, 0x7fe040
movzx edx, byte [0xbb5edb]
setne al
bt edx, eax
jae 0x837779
jmp 0x83782f
xor eax, eax
add ecx, 0x7fe040
movzx ecx, byte [0xbb5edb]
setne al
bt ecx, eax
jb 0x837810
mov eax, 0x7fe040
xor ecx, ecx
mov edx, dword [0xbb5ecc]
not eax
and eax, 1
add eax, 0x7fe040
sete cl
xor ecx, 0x46d00e9
lea eax, [ecx + 0x1000]
and cl, 1
xor edx, eax
mov dword [0xbb5ecc], edx
not edx
imul edx, eax
mov eax, dword [0xbb5ed0]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb5ed0], eax
or edx, edi
not eax
mov edi, dword [ebp + 8]
imul eax, edx
mov dl, 1
xor dword [0xbb5ed4], eax
shl dl, cl
or byte [0xbb5edb], dl
mov eax, 0x7fe040
not eax
and eax, 1
add eax, 0x7fe040
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb5edb], al
push 0xbb5ecc
push esi
call fcn.00777e00
add esp, 8
test eax, eax
fldz
fldz
jne case.0x837701.212
mov ecx, ebx
fstp st(1)
fstp st(0)
call fcn.00839100
test eax, eax
fldz
fldz
je case.0x837701.212
mov ecx, edi
fstp st(1)
fstp st(0)
call fcn.008372b0
lea eax, [esp + 0xa4]
mov ecx, edi
mov edx, ebx
push eax
call fcn.00839ae0
add esp, 4
add dword [edi], eax
adc dword [edi + 4], edx
jmp 0x83897b
mov edx, 0x7c6180
fstp st(1)
fstp st(0)
movzx ecx, byte [0xbb5eeb]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x8379b0
mov al, byte [0xbb5eeb]
cmp edx, 2
mov ah, 1
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5eeb], ah
jne 0x8378b8
mov ecx, 0x7c6180
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x837912
cmp ecx, 2
movzx edx, byte [0xbb5eeb]
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x8378f6
jmp 0x8379b0
cmp ecx, 2
movzx edx, byte [0xbb5eeb]
sete al
or al, 2
movzx eax, al
bt edx, eax
jb 0x83798f
mov eax, 0x7c6180
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbb5edc]
sete cl
or ecx, 0x8c400e32
add ecx, 0x208
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb5edc], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb5ee0]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb5ee0], eax
or edx, edi
not eax
mov edi, dword [ebp + 8]
imul eax, edx
mov dl, 1
xor dword [0xbb5ee4], eax
shl dl, cl
or byte [0xbb5eeb], dl
mov eax, 0x7c6180
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb5eeb], al
push 0xbb5edc
push esi
call fcn.00777e00
add esp, 8
test eax, eax
jne 0x837a67
cmp byte [edi + 0x29], 0
je 0x837a67
fld qword [edi + 0x20]
fmul dword [0xb433dc]
fadd qword [0xb43438]
fst qword [esp + 0x98]
fldz
fxch st(1)
fucomi st(1)
fstp st(1)
fldz
fxch st(1)
jb case.0x837701.212
fstp st(1)
fld qword [0xb43440]
fucompi st(1)
fldz
fxch st(1)
jbe case.0x837701.212
mov ecx, edi
fstp st(1)
fstp qword [esp + 0x10]
call fcn.00839eb0
fld qword [esp + 0x10]
fadd dword [0xb433e4]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
mov word [esp + 0xe], 0xc7f
fldcw word [esp + 0xe]
mov word [esp + 0xe], ax
fistp qword [esp + 0x58]
fldcw word [esp + 0xe]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [edi + 4], ecx
mov dword [edi], eax
mov word [edi + 0x28], 1
mov dword [esp + 0xa4], 0
jmp 0x838982
mov edx, fcn.0083ad70
movzx ecx, byte [0xbb5ef7]
imul edx, edx
and edx, 3
cmp edx, 3
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x837b6e
mov al, byte [0xbb5ef7]
cmp edx, 3
mov ah, 1
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5ef7], ah
jne 0x837a92
mov ecx, fcn.0083ad70
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
setne dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x837aec
cmp ecx, 3
movzx edx, byte [0xbb5ef7]
setne al
or al, 4
movzx eax, al
bt edx, eax
jae 0x837ad0
jmp 0x837b6e
cmp ecx, 3
movzx edx, byte [0xbb5ef7]
setne al
or al, 4
movzx eax, al
bt edx, eax
jb 0x837b4d
mov eax, fcn.0083ad70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbb5eec]
sete cl
xor ecx, 0x54a37d51
add ecx, 0x554
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb5eec], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb5ef0], edx
mov dl, 1
shl dl, cl
or byte [0xbb5ef7], dl
mov eax, fcn.0083ad70
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb5ef7], al
push 0xbb5eec
push esi
call fcn.00777e00
add esp, 8
test eax, eax
fldz
fldz
jne case.0x837701.212
mov ecx, ebx
fstp st(1)
fstp st(0)
call fcn.00839100
test eax, eax
fldz
fldz
je case.0x837701.212
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2d], 0
jne 0x83863f
mov ecx, edi
call fcn.008372b0
lea eax, [esp + 0xa4]
mov edx, ebx
mov ecx, edi
push eax
call fcn.00839ae0
add esp, 4
cmp dword [esp + 0xa4], 0
jne 0x837c05
sub dword [edi], eax
mov ecx, edi
mov esi, eax
sbb dword [edi + 4], edx
mov dword [esp + 0x10], edx
call fcn.00839eb0
lea eax, [esp + 0xa4]
mov ecx, edi
mov edx, ebx
push eax
call fcn.00839ae0
add esp, 4
mov ecx, dword [esp + 0x10]
sub esi, eax
sbb ecx, edx
add dword [edi], esi
adc dword [edi + 4], ecx
mov byte [edi + 0x2d], 1
jmp 0x838982
mov edx, fcn.007f5940
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbb5f07]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x837d59
mov al, byte [0xbb5f07]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5f07], ah
jne 0x837c42
mov ecx, fcn.007f5940
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x837caf
xor eax, eax
cmp ecx, 2
movzx ebx, byte [0xbb5f07]
sete al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt ebx, eax
jae 0x837c8e
jmp 0x837d59
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb5f07]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x837d31
mov eax, fcn.007f5940
xor ecx, ecx
mov ebx, edi
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0x45329579
lea ecx, [eax + ecx*2 + 8]
mov eax, dword [0xbb5ef8]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb5ef8], eax
not eax
imul edx, eax
mov eax, dword [0xbb5efc]
lea edi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb5efc], eax
or edi, edx
not eax
mov dl, 1
imul eax, edi
shl dl, cl
mov edi, ebx
xor dword [0xbb5f00], eax
or byte [0xbb5f07], dl
mov eax, fcn.007f5940
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb5f07], al
push 8
push 0xbb5ef8
push esi
call fcn.00777e50
add esp, 0xc
test eax, eax
fldz
fldz
jne case.0x837701.212
add esi, 8
fstp st(1)
fstp st(0)
mov ecx, esi
call fcn.00777870
lea edx, [esp + 0x98]
mov ecx, esi
push 1
push eax
call fcn.007a4c30
add esp, 8
test eax, eax
fldz
fldz
jle case.0x837701.212
fstp st(1)
fstp st(0)
fld qword [esp + 0x98]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
mov word [esp + 0xc], 0xc7f
fldcw word [esp + 0xc]
mov word [esp + 0xc], ax
fist dword [esp + 0x40]
fldcw word [esp + 0xc]
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x44], ebx
fild dword [esp + 0x44]
fld dword [0xb43430]
fucompi st(2)
jbe case.0x837701.212
test ebx, ebx
js case.0x837701.212
fxch st(1)
fucompi st(1)
fstp st(0)
fldz
fldz
jne case.0x837701.212
jp case.0x837701.212
mov ecx, edi
fstp st(1)
fstp st(0)
call fcn.00839ec0
mov ecx, edi
mov byte [edi + 0x2c], 0
mov byte [edi + 0x28], 0
call fcn.008372b0
mov edx, dword [edi + 4]
mov eax, dword [edi]
mov dword [esp + 0x24], eax
add eax, 0x7b98a00
mov ecx, edx
mov dword [esp + 0x10], edx
adc ecx, 0
push 0
push 0x5265c00
push ecx
push eax
call fcn.009804e0
push 0
push 7
push edx
push eax
call fcn.00980590
mov ecx, eax
mov edi, ebx
mov dword [esp + 0x18], eax
mov esi, edx
mov eax, ecx
sar edi, 0x1f
add eax, 0xfffffff9
adc edx, 0xffffffff
cmp ebx, ecx
mov ecx, edi
sbb ecx, esi
cmovge eax, dword [esp + 0x18]
cmovge edx, esi
sub ebx, eax
sbb edi, edx
mov edx, 0x5265c00
mov eax, ebx
imul ecx, edi, 0x5265c00
mul edx
add edx, ecx
add eax, dword [esp + 0x24]
mov ecx, dword [ebp + 8]
adc edx, dword [esp + 0x10]
mov dword [ecx], eax
mov dword [ecx + 4], edx
call fcn.00839eb0
mov dword [esp + 0xa4], 0
jmp 0x838982
mov edx, 0x98b2c0
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbb5f17]
and edx, 1
inc edx
mov ecx, edx
xor ecx, 0x98b2c0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x838031
mov al, byte [0xbb5f17]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, 0x98b2c0
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 6]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5f17], ah
jne 0x837eeb
mov ecx, 0x98b2c0
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov edi, ecx
xor edi, 0x98b2c0
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 6]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x837f76
mov edi, dword [ebp + 8]
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbb5f17]
xor edx, 0x98b2c0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jae 0x837f4a
jmp 0x838031
xor eax, eax
xor ecx, 0x98b2c0
movzx edx, byte [0xbb5f17]
mov edi, dword [ebp + 8]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x838005
mov ecx, 0x98b2c0
xor eax, eax
and ecx, 1
inc ecx
xor ecx, 0x98b2c0
sete al
mov ecx, eax
not ecx
and ecx, 0x321
lea ecx, [eax + ecx*2 + 0x1928845e]
mov eax, dword [0xbb5f08]
xor eax, ecx
mov dword [0xbb5f08], eax
not eax
mov edx, dword [0xbb5f0c]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb5f0c], edx
or edi, eax
not edx
mov al, 1
imul edx, edi
mov edi, dword [ebp + 8]
shl al, cl
xor dword [0xbb5f10], edx
or byte [0xbb5f17], al
mov eax, 0x98b2c0
xor ecx, ecx
and eax, 1
inc eax
xor eax, 0x98b2c0
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb5f17], al
push 9
push 0xbb5f08
push esi
call fcn.00777e50
add esp, 0xc
test eax, eax
fldz
fldz
jne case.0x837701.212
fstp st(1)
fstp st(0)
cmp byte [edi + 0x28], 0
fldz
fldz
jne 0x83807b
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2a], 0
fldz
fldz
jne 0x83807b
fstp st(1)
fstp st(0)
cmp byte [edi + 0x2b], 0
fldz
fldz
je case.0x837701.212
mov edx, fcn.007dc3b0
xor eax, eax
fstp st(1)
fstp st(0)
movzx ebx, byte [0xbb5f23]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x8381ae
mov al, byte [0xbb5f23]
xor ecx, ecx
cmp edx, 1
mov ah, 1
seta cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5f23], ah
jne 0x8380af
mov ecx, fcn.007dc3b0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x83811c
xor eax, eax
cmp ecx, 1
movzx ebx, byte [0xbb5f23]
seta al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt ebx, eax
jae 0x8380fb
jmp 0x8381ae
xor eax, eax
cmp ecx, 1
movzx edx, byte [0xbb5f23]
seta al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x838186
mov eax, fcn.007dc3b0
xor ecx, ecx
mov ebx, dword [0xbb5f18]
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 0x48429df1
lea ecx, [eax + ecx*2 + 0x410]
mov edx, ecx
xor ebx, ecx
shr edx, 0x1f
mov dword [0xbb5f18], ebx
not ebx
or edx, ecx
and cl, 7
imul edx, ebx
xor dword [0xbb5f1c], edx
mov dl, 1
shl dl, cl
or byte [0xbb5f23], dl
mov eax, fcn.007dc3b0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
seta cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb5f23], al
mov ecx, edi
add esi, 9
call fcn.00839ed0
mov word [edi + 0x2b], 1
mov dword [edi + 0x18], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x24], 0
mov dword [edi + 0x20], 0
mov word [edi + 0x28], 0
push 0xbb5f18
push esi
call fcn.00777e00
add esp, 8
test eax, eax
jne 0x838209
mov dword [edi + 0x10], 1
mov dword [esp + 0xa4], 0
jmp 0x838982
mov eax, fcn.008224f0
mov edx, 3
movzx ebx, byte [0xbb5f2f]
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.008224f0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt ebx, eax
jb 0x83837c
mov al, byte [0xbb5f2f]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, fcn.008224f0
sete cl
mov ebx, ecx
xor ebx, 1
lea ebx, [ecx + ebx*2]
mov cl, 7
or bl, 4
sub cl, bl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5f2f], ah
jne 0x838244
mov edx, fcn.008224f0
mov ecx, 3
mov ah, 7
sub ecx, edx
xor edx, edx
mov edi, ecx
xor edi, fcn.008224f0
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2]
or dl, 4
sub ah, dl
movzx edx, ah
movzx eax, al
bt eax, edx
jae 0x8382d1
mov edi, dword [ebp + 8]
mov edx, ecx
xor eax, eax
movzx ebx, byte [0xbb5f2f]
xor edx, fcn.008224f0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2]
or al, 4
movzx eax, al
bt ebx, eax
jae 0x8382a6
jmp 0x83837c
xor eax, eax
xor ecx, fcn.008224f0
movzx edx, byte [0xbb5f2f]
mov edi, dword [ebp + 8]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x83834d
mov eax, fcn.008224f0
mov ecx, 3
mov ebx, dword [0xbb5f24]
sub ecx, eax
xor eax, eax
xor ecx, fcn.008224f0
sete al
mov ecx, eax
not ecx
and ecx, 0xa1
lea ecx, [eax + ecx*2 + 0x4c5bc94c]
mov edx, ecx
xor ebx, ecx
shr edx, 0x1f
mov dword [0xbb5f24], ebx
not ebx
or edx, ecx
and cl, 7
imul edx, ebx
xor dword [0xbb5f28], edx
mov dl, 1
shl dl, cl
or byte [0xbb5f2f], dl
mov eax, fcn.008224f0
mov ecx, 3
mov dl, 0xfe
sub ecx, eax
xor eax, eax
xor ecx, fcn.008224f0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbb5f2f], dl
push 0xbb5f24
push esi
call fcn.00777e00
add esp, 8
test eax, eax
jne 0x8383ac
mov dword [edi + 0xc], 1
mov dword [edi + 0x10], 1
mov dword [esp + 0xa4], 0
jmp 0x838982
mov eax, fcn.007eb3e0
mov edx, 3
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.007eb3e0
movzx ecx, byte [0xbb5f3b]
sete al
bt ecx, eax
jb 0x8384c2
mov al, byte [0xbb5f3b]
mov ecx, edx
mov ah, 1
xor ecx, fcn.007eb3e0
sete cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb5f3b], ah
jne 0x8383da
mov edx, fcn.007eb3e0
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007eb3e0
sete dl
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x83843b
mov edx, ecx
xor eax, eax
xor edx, fcn.007eb3e0
movzx edx, byte [0xbb5f3b]
sete al
bt edx, eax
jae 0x83841d
jmp 0x8384c2
xor eax, eax
xor ecx, fcn.007eb3e0
movzx ecx, byte [0xbb5f3b]
sete al
bt ecx, eax
jb 0x8384a0
mov eax, fcn.007eb3e0
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbb5f30]
xor edx, fcn.007eb3e0
sete cl
or ecx, 0xe85be590
add ecx, 0x1010
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb5f30], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb5f34], edx
mov dl, 1
shl dl, cl
or byte [0xbb5f3b], dl
mov eax, fcn.007eb3e0
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007eb3e0
sete cl
xor cl, 7
rol al, cl
and byte [0xbb5f3b], al
push 0xbb5f30
push esi
call fcn.00777e00
add esp, 8
test eax, eax
fldz
fldz
jne case.0x837701.212
fstp st(1)
fstp st(0)
mov dword [esp + 0xa4], 0
jmp 0x838982
mov edi, 1
fstp st(1)
fstp st(0)
movzx eax, byte [esi + edi]
test eax, eax
je 0x838511
cmp al, 0x3a
je 0x838511
test byte [eax + 0xb436b8], 1
jne 0x838511
inc edi
jmp 0x8384f9
lea edx, [esp + 0x98]
mov ecx, esi
push 1
push edi
call fcn.007a4c30
add esp, 8
test eax, eax
jg 0x838539
mov dword [esp + 0xa4], 1
jmp 0x838982
add edi, esi
movzx eax, byte [edi]
cmp eax, 0x3a
jne 0x838654
movzx eax, byte [esi]
lea ecx, [esi + 1]
lea edx, [esp + 0x68]
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
add eax, 0xffffffd0
cmp eax, 0xa
cmovb ecx, esi
call fcn.00838d90
test eax, eax
fldz
fldz
jne case.0x837701.212
lea ecx, [esp + 0x68]
fstp st(1)
fstp st(0)
call fcn.008372b0
mov ecx, 0xfd6cd200
mov eax, dword [esp + 0x6c]
add ecx, dword [esp + 0x68]
adc eax, 0xffffffff
push 0
push 0x5265c00
push eax
push ecx
call fcn.00980590
mov dword [esp + 0x6c], edx
mov dword [esp + 0x68], eax
mov ebx, eax
mov edi, edx
cmp byte [esi], 0x2d
jne 0x838629
xor eax, eax
neg ebx
sbb eax, edi
mov dword [esp + 0x68], ebx
mov edi, eax
mov dword [esp + 0x6c], eax
mov esi, dword [ebp + 8]
mov ecx, esi
call fcn.008372b0
mov ecx, esi
call fcn.00839eb0
add dword [esi], ebx
adc dword [esi + 4], edi
mov dword [esp + 0xa4], 0
jmp 0x838982
movzx eax, byte [edi + 1]
inc edi
test byte [eax + 0xb436b8], 1
jne 0x83864f
mov ecx, edi
call fcn.00777870
lea ecx, [eax - 3]
fldz
fldz
cmp ecx, 7
ja case.0x837701.212
mov ecx, fcn.00802d20
fstp st(1)
fstp st(0)
mov dword [esp + 0x30], edi
xor edi, edi
mov dword [esp + 0x2c], eax
and ecx, 1
inc ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x38]
xor eax, eax
mov esi, dword [edi*4 + 0xb4f2a0]
mov dword [esp + 0x24], edi
xor ecx, fcn.00802d20
sete al
mov ecx, eax
not ecx
and ecx, 0x491
lea ebx, [eax + ecx*2 - 0x3263bc94]
mov eax, 1
xor ebx, dword [edi*4 + 0xb4f2e0]
mov ecx, ebx
and cl, 7
movzx edx, cl
shl eax, cl
xor cl, 7
mov dword [esp + 0x10], edx
mov edx, 1
shl edx, cl
mov ecx, dword [edi*4 + str._f_f_f_f_f_f]
mov dword [esp + 0x18], ecx
movzx ecx, byte [esi + ecx - 1]
mov edi, dword [esp + 0x10]
bt ecx, edi
mov edi, dword [esp + 0x18]
jb 0x83878f
mov dword [esp + 0x20], eax
mov al, byte [esi + edi - 1]
mov ecx, eax
or cl, dl
lock cmpxchg byte [esi + edi - 1], cl
jne 0x838707
mov ecx, dword [esp + 0x20]
movzx eax, al
test edx, eax
je 0x838729
movzx eax, byte [esi + edi - 1]
test ecx, eax
je 0x83871e
jmp 0x83878f
mov dword [esp + 0x34], edx
movzx eax, byte [esi + edi - 1]
test ecx, eax
jne 0x838785
lea ecx, [edi - 4]
mov dword [esp + 0x1c], esi
shr ecx, 2
je 0x838779
mov edx, dword [esp + 0x1c]
xor eax, eax
mov dword [esp + 0x3c], ecx
mov esi, dword [edx]
mov ecx, eax
mov dword [esp + 0x10], ebx
inc eax
shl dword [esp + 0x10], cl
and cl, 0x1f
xor cl, 0x1f
xor esi, ebx
shr ebx, cl
mov ecx, dword [esp + 0x3c]
or ebx, dword [esp + 0x10]
mov dword [edx], esi
not esi
add edx, 4
imul ebx, esi
cmp eax, ecx
jne 0x83874c
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
or byte [esi + edi - 1], al
mov eax, dword [esp + 0x34]
not al
and byte [esi + edi - 1], al
mov edi, dword [esp + 0x24]
inc edi
cmp edi, 6
jne 0x83868f
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov al, byte [ebx + ecx - 1]
lea esi, [ecx - 1]
or al, 0x20
cmp al, 0x73
cmovne esi, ecx
mov ecx, edi
call fcn.008372b0
mov dword [esp + 0xa4], 1
xor eax, eax
fld qword [esp + 0x98]
fldz
fucompi st(1)
seta al
add esi, 0xfffffffd
fld qword [eax*8 + 0xb433c0]
cmp esi, 3
fstp qword [esp + 0x24]
ja case.default.0x8387f3
fstp qword [esp + 0x10]
jmp dword [esi*4 + 0xb51b60]
push 6
push ebx
push 0xbb5f5c
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x8389a9
fld qword [0xb43410]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x8389a9
fld qword [0xb43418]
xor eax, eax
fucompi st(1)
jbe 0x8389a9
lea esi, [eax + eax*2]
mov al, byte [esi*8 + 0xb48590]
cmp al, 2
je 0x8388d2
cmp al, 1
fstp st(0)
jne 0x838926
mov ecx, edi
call fcn.00839ec0
fnstcw word [esp + 0xa]
mov edx, 0xffffffff
movzx eax, word [esp + 0xa]
mov word [esp + 0xa], 0xc7f
fldcw word [esp + 0xa]
mov word [esp + 0xa], ax
mov eax, dword [ebp + 8]
fld qword [esp + 0x10]
fist dword [esp + 0x48]
fldcw word [esp + 0xa]
mov ecx, dword [esp + 0x48]
mov edi, dword [eax + 0xc]
mov eax, 0xfffffff4
add edi, ecx
test edi, edi
cmovg eax, edx
mov edx, 0x2aaaaaab
add eax, edi
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 8]
add dword [eax + 8], edx
shl edx, 2
lea eax, [edx + edx*2]
mov edx, dword [ebp + 8]
sub edi, eax
mov dword [edx + 0xc], edi
mov edi, dword [ebp + 8]
mov byte [edi + 0x28], 0
mov dword [esp + 0x4c], ecx
fisub dword [esp + 0x4c]
jmp 0x83891b
fnstcw word [esp + 8]
mov ecx, dword [ebp + 8]
movzx eax, word [esp + 8]
mov word [esp + 8], 0xc7f
fldcw word [esp + 8]
mov word [esp + 8], ax
fistp dword [esp + 0x50]
fldcw word [esp + 8]
mov edi, dword [esp + 0x50]
call fcn.00839ec0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
add dword [eax + 8], edi
mov byte [ecx + 0x28], 0
mov dword [esp + 0x54], edi
mov edi, dword [ebp + 8]
fld qword [esp + 0x10]
fisub dword [esp + 0x54]
fst qword [esp + 0x10]
fstp qword [esp + 0x98]
mov ecx, edi
call fcn.008372b0
fld qword [esp + 0x10]
fmul qword [esi*8 + 0xb485a0]
fld qword [esp + 0x24]
faddp st(1)
fnstcw word [esp + 6]
movzx eax, word [esp + 6]
mov word [esp + 6], 0xc7f
fldcw word [esp + 6]
mov word [esp + 6], ax
fistp qword [esp + 0x60]
fldcw word [esp + 6]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
add dword [edi], eax
adc dword [edi + 4], ecx
mov dword [esp + 0xa4], 0
fldz
fstp st(0)
mov ecx, edi
call fcn.00839eb0
fldz
fldz
fstp st(1)
fstp st(0)
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa8]
xor ecx, ebp
call fcn.00980459
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
fstp st(0)
push 6
push ebx
push 0xbb5f68
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x8387f3
fld qword [0xb43420]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x8387f3
fld qword [0xb43428]
mov eax, 1
fucompi st(1)
ja 0x838838
jmp case.default.0x8387f3
push 4
push ebx
push 0xbb5f74
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x838a1f
fld qword [0xb433f8]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x838a1f
fld qword [0xb43400]
mov eax, 2
fucompi st(1)
ja 0x838838
fstp st(0)
push 4
push ebx
push 0xbb5f98
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x8387f3
fld dword [0xb43408]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x8387f3
fld dword [0xb4340c]
mov eax, 5
jmp 0x8389dc
push 3
push ebx
push 0xbb5f80
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x8387f3
fld dword [0xb433f0]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x8387f3
fld dword [0xb433f4]
mov eax, 3
jmp 0x8389dc
push 5
push ebx
push 0xbb5f8c
call fcn.00777e50
fld qword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne case.default.0x8387f3
fld dword [0xb433e8]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe case.default.0x8387f3
fld dword [0xb433ec]
mov eax, 4
jmp 0x8389dc