Function at 0x5c1cf5
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
mov esi, ecx
push edi
cmp word [esi + 0x4d4], 0
jle 0x5c2eaf
fld dword [esi + 0xd2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
jne 0x5c2eaf
mov eax, dword [esi + 0x48]
mov ecx, dword [0x826818]
push eax
call fcn.0044baf0
test eax, eax
je 0x5c1d47
mov eax, dword [esi + 0x1c5]
test eax, eax
je 0x5c1d47
cmp dword [0x826828], eax
jne 0x5c2eaf
mov ecx, dword [esi + 0x48]
push ecx
call fcn.0048aa70
add esp, 4
test eax, eax
jne 0x5c2eaf
mov dx, word [0x6a2cf4]
mov al, byte [esi + 0x4b5]
mov ebx, dword [esi + 0x4b7]
lea edi, [esi + 0xaa]
push edx
push edi
push eax
call fcn.004734c0
mov ebp, eax
mov eax, dword [esi + 0xa6]
add esp, 0xc
test eax, eax
je 0x5c1dc8
mov ecx, dword [esi + 0xba]
push 0
push ecx
call fcn.0048a960
movsx edx, ax
mov al, byte [esi + 0x4b5]
add esp, 8
mov ecx, eax
and ecx, 0xff
cmp al, 8
movsx ecx, word [ecx*2 + 0x6a2d64]
jne 0x5c1dbf
mov ecx, dword [0x6a2cf4]
lea eax, [ecx + edx - 1]
cdq
idiv ecx
mov ebp, eax
mov dx, word [0x6a2cf4]
xor eax, eax
mov al, byte [esi + 0x4b5]
push edx
push edi
push eax
call fcn.004734f0
mov cl, byte [esi + 0x4b5]
add esp, 0xc
test cl, cl
je 0x5c1e09
cmp cl, 1
je 0x5c1e09
cmp cl, 2
je 0x5c1e09
cmp cl, 3
je 0x5c1e09
cmp cl, 7
je 0x5c1e09
cmp cl, 8
jne 0x5c24d6
cmp ebp, eax
jg 0x5c24d6
mov eax, dword [0x826bdc]
cmp eax, 2
je 0x5c2e51
cmp eax, 3
jne 0x5c1e31
cmp dword [0x826be0], 1
je 0x5c2e51
push 0
mov ecx, esi
call fcn.005bc0b0
mov eax, dword [esi + 0x7379]
cmp ebp, eax
jle 0x5c20d3
mov al, byte [esi + 0x4b5]
inc word [esi + 0x4d4]
cmp al, 7
jne 0x5c1e60
mov ebp, 1
jmp 0x5c1e7c
cmp al, 8
jne 0x5c1e6c
mov ebp, dword [0x6a2cf4]
jmp 0x5c1e7c
and eax, 0xff
movsx eax, word [eax*2 + 0x6bff38]
lea ebp, [eax + eax*4]
push 0
call dword [fcn.0065f2bc]
lea ecx, [esp + 0x24]
mov dword [esp + 0x24], eax
push ecx
call dword [fcn.0065f26c]
mov edx, dword [esi + 0x7379]
mov edi, eax
lea eax, [esi + 0xaa]
push eax
push ebp
push edx
call fcn.00473550
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
add esp, 0x14
shl ecx, 5
mov edx, dword [edx + 0x1a]
mov word [ecx + edx - 0x1e], ax
mov eax, dword [esi + 0xa6]
test eax, eax
je 0x5c1ef2
push 1
call fcn.00473c00
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
add esp, 4
add eax, ebp
mov edx, dword [edx + 0x1a]
shl ecx, 5
mov word [ecx + edx - 0x1e], ax
fld dword [esi + 0xe2]
fcom dword [0x65f998]
fnstsw ax
test ah, 1
je 0x5c1f0d
fstp st(0)
fld dword [esi + 0xd2]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
xor ebp, ebp
shl eax, 5
mov edx, dword [ecx + 0x1a]
fst dword [eax + edx - 0x14]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
fst dword [eax + edx - 0x10]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
fst dword [eax + edx - 0x18]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
fstp dword [eax + edx - 0x1c]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
mov dword [eax + edx - 8], ebp
mov ecx, dword [esi + 0x4b7]
movsx eax, word [esi + 0x4d4]
mov edx, dword [ecx + 0x1a]
shl eax, 5
mov dword [eax + edx - 0xc], ebp
mov ecx, dword [esi + 0x4b7]
movsx eax, word [esi + 0x4d4]
mov edx, dword [ecx + 0x1a]
mov cx, word [edi + 0x14]
shl eax, 5
shl cx, 0xb
lea eax, [eax + edx - 0x20]
sub ecx, 0x3801
mov dx, word [eax]
not dx
and edx, 0x7ff
xor ecx, edx
mov word [eax], cx
mov ecx, dword [esi + 0x4b7]
movsx eax, word [esi + 0x4d4]
mov edx, dword [ecx + 0x1a]
shl eax, 5
lea ecx, [eax + edx - 0x20]
mov ax, word [edi + 0x10]
inc ax
mov dx, word [ecx]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
add ax, word [edi + 0xc]
xor eax, edx
and eax, 0x7ff
xor eax, edx
mov word [ecx], ax
mov ecx, dword [esi + 0x7379]
inc ecx
cmp ebx, ebp
mov dword [esi + 0x7379], ecx
je 0x5c202e
mov cx, word [esi + 0x4d4]
mov word [ebx + 0x17], cx
mov ebx, dword [ebx + 0xfa]
cmp ebx, ebp
jne 0x5c2019
push 1
mov ecx, esi
call fcn.005bc0b0
mov ecx, dword [0x80c188]
sub esp, 8
mov edx, esp
mov eax, dword [esi + 0x48]
mov dword [edx], ecx
mov cx, word [0x80c18c]
mov word [edx + 4], cx
mov cl, byte [0x80c18e]
mov byte [edx + 6], cl
mov dx, word [esi + 0x4d4]
mov ecx, dword [esi + 0x7693]
push edx
mov edx, dword [esi + 0x4b7]
push ecx
mov ecx, dword [edx + 0x1a]
movzx dx, byte [esi + 0x4b5]
push ecx
push edx
movsx cx, byte [eax + 0xec]
push ecx
push eax
call fcn.00484f10
add esp, 0x20
mov ecx, esi
call fcn.005af4e0
mov edx, dword [esi + 0x737d]
mov eax, dword [esi + 0x7375]
lea ecx, [edx + eax + 1]
movsx edx, word [esi + 0x4d4]
cmp ecx, edx
jl 0x5c20c7
push 1
push 1
mov ecx, esi
call fcn.005b05d0
push 1
push 1
mov ecx, esi
call fcn.005b0980
mov ecx, esi
call fcn.005bb180
jmp 0x5c2e51
jne 0x5c2e51
fld dword [esi + 0xe2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c2179
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
fld dword [eax + edx - 0x18]
fld dword [esi + 0xe2]
lea ecx, [eax + edx - 0x18]
fcompp
fnstsw ax
test ah, 1
je 0x5c211e
fld dword [ecx]
jmp 0x5c2124
fld dword [esi + 0xe2]
fstp dword [ecx]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
fld dword [eax + edx - 0x14]
fld dword [esi + 0xe2]
lea ecx, [eax + edx - 0x14]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5c2154
fld dword [ecx]
jmp 0x5c215a
fld dword [esi + 0xe2]
fstp dword [ecx]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
mov ecx, dword [esi + 0xe2]
mov dword [eax + edx - 0x10], ecx
movsx eax, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
mov ecx, eax
shl ecx, 5
mov ebp, dword [edx + 0x1a]
xor edi, edi
mov edx, dword [ecx + ebp - 8]
add ecx, ebp
mov dword [esp + 0x18], edx
mov edx, dword [esi + 0xa6]
test edx, edx
mov dword [esp + 0x20], edi
je 0x5c2205
mov cx, word [ecx - 0x20]
lea edx, [eax - 2]
shl edx, 5
mov dword [esp + 0x10], ecx
mov dx, word [edx + ebp]
xor dx, cx
test edx, 0x7ff
jne 0x5c2230
add eax, 0xfffffffe
mov edx, eax
mov ecx, eax
shl edx, 5
add edx, ebp
jmp 0x5c21d7
mov eax, dword [esp + 0x20]
xor ebx, ebx
test eax, eax
setl bl
dec ebx
sub edx, 0x20
and ebx, ecx
mov eax, ebx
shl eax, 5
mov ebx, dword [eax + ebp + 0x18]
mov ax, word [edx]
xor ax, word [esp + 0x10]
add edi, ebx
dec ecx
test eax, 0x7ff
mov dword [esp + 0x20], ecx
je 0x5c21d3
jmp 0x5c222c
mov ecx, dword [esi + 0x7379]
lea edx, [ecx - 1]
test edx, edx
jle 0x5c2230
lea ecx, [eax - 2]
xor eax, eax
test ecx, ecx
setl al
dec eax
and eax, ecx
shl eax, 5
mov ebx, dword [eax + ebp + 0x18]
add edi, ebx
dec ecx
dec edx
jne 0x5c2215
mov dword [esp + 0x20], edi
mov ecx, dword [esi + 0x48]
push ecx
call fcn.00473df0
add esp, 4
test eax, eax
jne 0x5c229e
mov eax, dword [esi + 0x48]
push eax
movsx dx, byte [eax + 0xec]
push edx
call fcn.00474010
add esp, 8
test ax, ax
mov eax, dword [esi + 0xee]
je 0x5c2278
mov ecx, dword [esi + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0
fild qword [esp + 0x10]
fmul dword [ecx + 0xc]
jmp 0x5c22aa
movsx edx, word [esi + 0x4d4]
sub eax, edi
mov ecx, 0
sets cl
dec ecx
and eax, ecx
mov ecx, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [ecx + 0x1a]
mov dword [edx + ecx - 8], eax
jmp 0x5c22d4
fld dword [esi + 0xf6]
fmul dword [0x665454]
fisub dword [esp + 0x20]
call fcn.00645030
movsx ecx, word [esi + 0x4d4]
xor edx, edx
test eax, eax
setl dl
dec edx
and eax, edx
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov edx, dword [edx + 0x1a]
mov dword [ecx + edx - 8], eax
mov eax, dword [esi + 0xa6]
fld dword [0x663774]
test eax, eax
je 0x5c2345
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
mov edx, eax
shl edx, 5
mov ebp, dword [ecx + 0x1a]
lea ecx, [eax - 2]
shl ecx, 5
mov bx, word [edx + ebp - 0x20]
mov dx, word [ecx + ebp]
xor dx, bx
test edx, 0x7ff
jne 0x5c237a
lea edi, [eax - 2]
mov edx, edi
mov ecx, edi
shl edx, 5
add edx, ebp
xor eax, eax
test edi, edi
setl al
dec eax
sub edx, 0x20
and eax, ecx
shl eax, 5
dec ecx
fadd dword [eax + ebp + 0x14]
mov ax, bx
mov edi, ecx
xor ax, word [edx]
test eax, 0x7ff
je 0x5c231f
jmp 0x5c237a
mov eax, dword [esi + 0x7379]
lea edx, [eax - 1]
test edx, edx
jle 0x5c237a
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
sub eax, 2
mov edi, dword [ecx + 0x1a]
xor ecx, ecx
test eax, eax
setl cl
dec ecx
and ecx, eax
shl ecx, 5
dec eax
dec edx
fadd dword [ecx + edi + 0x14]
jne 0x5c2365
fsubr dword [esi + 0xf6]
fld dword [0x663774]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x5c2397
fstp st(0)
fld dword [0x663774]
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
fstp dword [edx + ecx - 0xc]
mov eax, dword [esi + 0xa6]
test eax, eax
je 0x5c23e1
mov edx, dword [esi + 0x48]
cmp byte [edx + 0xed], 3
jne 0x5c23e1
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
mov ecx, dword [esi + 0x106]
mov dword [eax + edx - 0xc], ecx
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
push 1
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esp + 0x1c]
mov edi, dword [edx + ecx - 8]
mov ecx, esi
cmp eax, edi
je 0x5c2d6c
call fcn.005bc0b0
mov edx, dword [0x80c188]
sub esp, 8
mov ecx, esp
mov eax, dword [esi + 0x48]
mov dword [ecx], edx
mov dx, word [0x80c18c]
mov word [ecx + 4], dx
mov dl, byte [0x80c18e]
mov byte [ecx + 6], dl
mov cx, word [esi + 0x4d4]
mov edx, dword [esi + 0x7693]
push ecx
mov ecx, dword [esi + 0x4b7]
push edx
mov edx, dword [ecx + 0x1a]
movzx cx, byte [esi + 0x4b5]
push edx
push ecx
movsx dx, byte [eax + 0xec]
push edx
push eax
call fcn.00484f10
add esp, 0x20
mov ecx, esi
call fcn.005af4e0
mov eax, dword [esi + 0x7375]
mov ecx, dword [esi + 0x737d]
lea edx, [eax + ecx + 1]
movsx eax, word [esi + 0x4d4]
cmp edx, eax
jl 0x5c2e51
mov edi, dword [esi + 0x4b7]
test edi, edi
je 0x5c24ae
mov ecx, dword [esi + 0x737d]
push ecx
push edi
mov ecx, esi
call fcn.005aff60
mov edi, dword [edi + 0xfa]
test edi, edi
jne 0x5c2495
xor edi, edi
cmp word [esi + 0x4bb], di
jle 0x5c2e51
push edi
mov ecx, esi
call fcn.005af950
movsx edx, word [esi + 0x4bb]
inc edi
cmp edi, edx
jl 0x5c24bd
jmp 0x5c2e51
mov eax, dword [0x826bdc]
cmp eax, 2
je 0x5c2e51
cmp eax, 3
jne 0x5c24f6
cmp dword [0x826be0], 1
je 0x5c2e51
cmp cl, 9
mov bl, 4
je 0x5c2519
cmp cl, bl
je 0x5c2519
cmp cl, 6
je 0x5c2519
cmp cl, 5
je 0x5c2519
cmp cl, 0xa
je 0x5c2519
cmp cl, 0xb
jne 0x5c2e51
push 0
mov ecx, esi
call fcn.005bc0b0
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x2b8]
cmp ecx, eax
jne 0x5c2537
cmp byte [esi + 0x4b5], bl
jne 0x5c2555
mov ecx, dword [esi + 0xee]
mov edx, dword [esi + 0xf6]
mov dword [esi + 0x2b8], eax
mov dword [esi + 0x2bc], ecx
mov dword [esi + 0x2c0], edx
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
mov edi, dword [0x6a2d04]
shl ecx, 5
mov edx, dword [edx + 0x1a]
push eax
mov ecx, dword [ecx + edx - 8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [0x826818]
call fcn.0044baf0
test eax, eax
je 0x5c2596
mov eax, dword [esi + 0x1c5]
xor ebp, ebp
cmp eax, ebp
jle 0x5c2598
mov edi, eax
jmp 0x5c2598
xor ebp, ebp
cmp byte [esi + 0x4b5], bl
jne 0x5c25d3
mov ax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
movsx edx, ax
mov ebp, dword [ecx + 0x1a]
shl edx, 5
cmp edi, dword [edx + ebp - 0x20]
je 0x5c25d1
inc eax
mov word [esi + 0x4d4], ax
mov ecx, dword [ecx + 0x1a]
movsx eax, ax
shl eax, 5
mov dword [eax + ecx - 0x20], edi
xor ebp, ebp
mov cl, byte [esi + 0x4b5]
cmp cl, bl
jne 0x5c2887
fld dword [esi + 0xe2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
jne 0x5c2631
fld dword [esi + 0xd6]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
jne 0x5c2631
fld dword [esi + 0xda]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
jne 0x5c2631
fld dword [esi + 0xde]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c2887
fld dword [esi + 0xd6]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c26f7
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0xd6]
mov dword [edx + ecx - 0x1c], eax
fld dword [esi + 0xe2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c2680
fld dword [esi + 0xd6]
jmp 0x5c2686
fld dword [esi + 0xe2]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x10]
fld dword [esi + 0xda]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c26b8
fld dword [esi + 0xd6]
jmp 0x5c26be
fld dword [esi + 0xda]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x18]
fld dword [esi + 0xde]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c27c3
fld dword [esi + 0xd6]
jmp 0x5c27c9
fld dword [esi + 0xe2]
fcom qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c2712
fstp st(0)
fld dword [esi + 0xd2]
fld dword [esi + 0xd6]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c2729
fld st(0)
jmp 0x5c272f
fld dword [esi + 0xd6]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x1c]
fld dword [esi + 0xe2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c275d
fld st(0)
jmp 0x5c2763
fld dword [esi + 0xe2]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x10]
fld dword [esi + 0xda]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
je 0x5c2791
fld st(0)
jmp 0x5c2797
fld dword [esi + 0xda]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x18]
fld dword [esi + 0xde]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 1
jne 0x5c27c9
fstp st(0)
fld dword [esi + 0xde]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fstp dword [ecx + eax - 0x14]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
add ecx, eax
fld dword [ecx - 0x18]
fld dword [ecx - 0x1c]
fcompp
fnstsw ax
test ah, 1
je 0x5c2809
fld dword [ecx - 0x18]
jmp 0x5c280c
fld dword [ecx - 0x1c]
fstp dword [ecx - 0x18]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
add ecx, eax
fld dword [ecx - 0x18]
fld dword [ecx - 0x10]
fcompp
fnstsw ax
test ah, 1
je 0x5c2838
fld dword [ecx - 0x18]
jmp 0x5c283b
fld dword [ecx - 0x10]
fstp dword [ecx - 0x18]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
add ecx, eax
fld dword [ecx - 0x14]
fld dword [ecx - 0x1c]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5c2867
fld dword [ecx - 0x14]
jmp 0x5c286a
fld dword [ecx - 0x1c]
fstp dword [ecx - 0x14]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
add ecx, eax
jmp 0x5c2a0a
fld dword [esi + 0xe2]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c2a24
fld dword [esi + 0xd6]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c2a24
fld dword [esi + 0xda]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c2a24
fld dword [esi + 0xde]
fcomp qword [0x662cb0]
fnstsw ax
test ah, 0x41
jne 0x5c2a24
cmp cl, bl
movsx ecx, word [esi + 0x4d4]
jne 0x5c2940
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
mov edx, dword [esi + 0xd6]
mov dword [ecx + eax - 0x1c], edx
mov ecx, dword [esi + 0x4b7]
movsx eax, word [esi + 0x4d4]
mov edx, dword [ecx + 0x1a]
mov ecx, dword [esi + 0xda]
shl eax, 5
mov dword [eax + edx - 0x18], ecx
mov eax, dword [esi + 0x4b7]
movsx edx, word [esi + 0x4d4]
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0xde]
shl edx, 5
mov dword [edx + ecx - 0x14], eax
jmp 0x5c29a5
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fld dword [ecx + eax - 0x18]
fld dword [esi + 0xda]
lea ecx, [ecx + eax - 0x18]
fcompp
fnstsw ax
test ah, 1
je 0x5c2967
fld dword [ecx]
jmp 0x5c296d
fld dword [esi + 0xda]
fstp dword [ecx]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fld dword [ecx + eax - 0x14]
fld dword [esi + 0xde]
lea ecx, [ecx + eax - 0x14]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5c299d
fld dword [ecx]
jmp 0x5c29a3
fld dword [esi + 0xde]
fstp dword [ecx]
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
mov edx, dword [esi + 0xe2]
mov dword [ecx + eax - 0x10], edx
mov ecx, dword [esi + 0x4b7]
movsx eax, word [esi + 0x4d4]
mov edx, dword [ecx + 0x1a]
shl eax, 5
fld dword [eax + edx - 0x18]
fld dword [eax + edx - 0x10]
lea ecx, [eax + edx]
fcompp
fnstsw ax
test ah, 1
je 0x5c29ee
fld dword [ecx - 0x18]
jmp 0x5c29f1
fld dword [ecx - 0x10]
fstp dword [ecx - 0x18]
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
lea ecx, [eax + edx]
fld dword [ecx - 0x14]
fld dword [ecx - 0x10]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5c2a1e
fld dword [ecx - 0x14]
jmp 0x5c2a21
fld dword [ecx - 0x10]
fstp dword [ecx - 0x14]
cmp byte [esi + 0x4b5], bl
jne 0x5c2b1d
mov eax, dword [esi + 0x48]
push eax
call fcn.00473df0
add esp, 4
test eax, eax
jne 0x5c2a90
mov eax, dword [esi + 0x48]
push eax
movsx cx, byte [eax + 0xec]
push ecx
call fcn.00474010
add esp, 8
test ax, ax
je 0x5c2a90
mov edx, dword [esi + 0xee]
mov eax, dword [esi + 0x48]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ebp
fild qword [esp + 0x10]
fmul dword [eax + 0xc]
call fcn.00645030
movsx ecx, word [esi + 0x4d4]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov edx, dword [edx + 0x1a]
mov dword [ecx + edx - 8], eax
jmp 0x5c2aad
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
mov ecx, dword [esi + 0xee]
mov dword [eax + edx - 8], ecx
mov eax, dword [esi + 0x48]
cmp byte [eax + 0xed], 3
je 0x5c2ade
fld dword [eax + 0x10]
movsx edx, word [esi + 0x4d4]
fmul dword [esi + 0xf6]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
fstp dword [edx + ecx - 0xc]
jmp 0x5c2d45
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0x106]
mov dword [edx + ecx - 0xc], eax
mov edx, dword [esi + 0x4b7]
movsx ecx, word [esi + 0x4d4]
mov eax, dword [edx + 0x1a]
mov edx, dword [esi + 0x15c]
shl ecx, 5
mov dword [ecx + eax - 4], edx
jmp 0x5c2d45
mov eax, dword [esi + 0xee]
mov ecx, dword [esi + 0x2bc]
cmp eax, ecx
jbe 0x5c2ce7
mov eax, dword [esi + 0x48]
push eax
movsx cx, byte [eax + 0xec]
push ecx
call fcn.004782e0
movzx dx, byte [esi + 0x4b5]
movsx eax, ax
push edx
push eax
call fcn.00472e50
add esp, 0x10
test eax, eax
je 0x5c2c3c
cmp dword [esi + 0x72], ebp
je 0x5c2b9f
movsx eax, word [esi + 0x4d4]
mov ecx, dword [esi + 0x4b7]
shl eax, 5
mov edx, dword [ecx + 0x1a]
lea ecx, [eax + edx - 8]
mov edx, dword [esi + 0xee]
mov ebx, dword [esi + 0x2bc]
sub edx, ebx
mov eax, 0x51eb851f
mul edx
mov eax, dword [ecx]
shr edx, 5
add eax, edx
mov dword [ecx], eax
jmp 0x5c2cdb
mov eax, dword [esi + 0x48]
push eax
call fcn.00473df0
add esp, 4
test eax, eax
jne 0x5c2c20
mov eax, dword [esi + 0x48]
push eax
movsx cx, byte [eax + 0xec]
push ecx
call fcn.00474010
add esp, 8
test ax, ax
je 0x5c2c20
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
mov dword [esp + 0x14], ebp
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0x2bc]
lea edi, [edx + ecx - 8]
mov edx, dword [esi + 0xee]
sub edx, eax
mov eax, dword [esi + 0x48]
mov dword [esp + 0x10], edx
mov ecx, dword [edi]
fild qword [esp + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebp
fmul dword [eax + 0xc]
fmul dword [0x665454]
fiadd dword [esp + 0x10]
call fcn.00645030
mov dword [edi], eax
jmp 0x5c2cdb
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
lea ecx, [edx + ecx - 8]
jmp 0x5c2b7c
mov eax, dword [esi + 0x48]
push eax
call fcn.00473df0
add esp, 4
test eax, eax
jne 0x5c2cb4
mov eax, dword [esi + 0x48]
push eax
movsx cx, byte [eax + 0xec]
push ecx
call fcn.00474010
add esp, 8
test ax, ax
je 0x5c2cb4
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
mov dword [esp + 0x14], ebp
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0x2bc]
lea edi, [edx + ecx - 8]
mov edx, dword [esi + 0xee]
sub edx, eax
mov eax, dword [esi + 0x48]
mov ecx, dword [edi]
mov dword [esp + 0x10], edx
fild qword [esp + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebp
fmul dword [eax + 0xc]
fiadd dword [esp + 0x10]
call fcn.00645030
mov dword [edi], eax
jmp 0x5c2cdb
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
mov edi, dword [esi + 0x2bc]
shl edx, 5
mov ecx, dword [eax + 0x1a]
lea eax, [edx + ecx - 8]
mov edx, dword [esi + 0xee]
sub edx, edi
add dword [eax], edx
mov eax, dword [esi + 0xee]
mov dword [esi + 0x2bc], eax
movsx ecx, word [esi + 0x4d4]
fld dword [esi + 0xf6]
fsub dword [esi + 0x2c0]
mov edx, dword [esi + 0x4b7]
shl ecx, 5
mov eax, dword [edx + 0x1a]
fadd dword [ecx + eax - 0xc]
lea eax, [ecx + eax - 0xc]
fstp dword [eax]
mov ecx, dword [esi + 0x48]
cmp byte [ecx + 0xed], 3
jne 0x5c2d39
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esi + 0x106]
mov dword [edx + ecx - 0xc], eax
mov ecx, dword [esi + 0xf6]
mov dword [esi + 0x2c0], ecx
cmp dword [esp + 0x20], ebp
jne 0x5c2d76
movsx edx, word [esi + 0x4d4]
mov eax, dword [esi + 0x4b7]
shl edx, 5
mov ecx, dword [eax + 0x1a]
mov eax, dword [esp + 0x18]
cmp dword [edx + ecx - 8], eax
jne 0x5c2d76
push 1
mov ecx, esi
call fcn.005bc0b0
jmp 0x5c2e51
push 1
mov ecx, esi
call fcn.005bc0b0
mov edx, dword [0x80c188]
sub esp, 8
mov ecx, esp
mov eax, dword [esi + 0x48]
mov dword [ecx], edx
mov dx, word [0x80c18c]
mov word [ecx + 4], dx
mov dl, byte [0x80c18e]
mov byte [ecx + 6], dl
mov cx, word [esi + 0x4d4]
mov edx, dword [esi + 0x7693]
push ecx
mov ecx, dword [esi + 0x4b7]
push edx
mov edx, dword [ecx + 0x1a]
movzx cx, byte [esi + 0x4b5]
push edx
push ecx
movsx dx, byte [eax + 0xec]
push edx
push eax
call fcn.00484f10
add esp, 0x20
mov ecx, esi
call fcn.005af4e0
mov eax, dword [esi + 0x7375]
mov ecx, dword [esi + 0x737d]
lea edx, [eax + ecx + 1]
movsx eax, word [esi + 0x4d4]
cmp edx, eax
jl 0x5c2e51
push 1
push 1
mov ecx, esi
call fcn.005b05d0
push 1
push 1
mov ecx, esi
call fcn.005b0980
mov edi, dword [esi + 0x4b7]
cmp edi, ebp
je 0x5c2e32
mov ecx, dword [esi + 0x737d]
push ecx
push edi
mov ecx, esi
call fcn.005aff60
mov edi, dword [edi + 0xfa]
cmp edi, ebp
jne 0x5c2e19
xor edi, edi
cmp word [esi + 0x4bb], bp
jle 0x5c2e51
push edi
mov ecx, esi
call fcn.005af950
movsx edx, word [esi + 0x4bb]
inc edi
cmp edi, edx
jl 0x5c2e3d
movsx ecx, word [esi + 0x4d4]
mov eax, dword [esi + 0x7411]
cmp eax, ecx
jge 0x5c2eaf
mov ecx, dword [esi + 0x7405]
test ecx, ecx
je 0x5c2e7b
push eax
mov ecx, esi
call fcn.005aa080
mov ecx, esi
call fcn.005aaad0
mov eax, dword [esi + 0x73f9]
test eax, eax
je 0x5c2eaf
mov edx, dword [esi + 0x73f1]
mov ebx, dword [esi + 4]
sub edx, ebx
mov ecx, esi
push edx
call fcn.005b7260
mov edx, dword [esi + 0x737d]
mov ecx, esi
add eax, edx
push eax
call fcn.005aa080
mov ecx, esi
call fcn.005aaad0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 4