Function at 0x5dbd43
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x344
mov eax, dword [0x10148050]
xor eax, ebp
mov dword [ebp - 4], eax
fld1
push ebx
fst qword [ebp - 0x1c4]
xor ebx, ebx
fst qword [ebp - 0x1bc]
push esi
mov esi, dword [ebp + 8]
fst qword [ebp - 0x1b4]
mov eax, dword [esi + 0x65e8]
fst qword [ebp - 0x1ac]
fldz
mov dword [ebp - 0x338], 0x10
fst qword [ebp - 0x1a4]
mov dword [ebp - 0x33c], ebx
fst qword [ebp - 0x19c]
mov dword [ebp - 0x324], ebx
fst qword [ebp - 0x194]
mov dword [ebp - 0x320], 0x3020100
fstp qword [ebp - 0x18c]
mov dword [ebp - 0x16c], ebx
mov dword [ebp - 0x168], ebx
mov dword [ebp - 0x164], ebx
mov dword [ebp - 0x160], ebx
fst qword [ebp - 0x184]
mov dword [ebp - 0x15c], ebx
fst qword [ebp - 0x17c]
mov dword [ebp - 0x158], 0xfff
fstp qword [ebp - 0x174]
mov dword [ebp - 0x334], ebx
mov dword [ebp - 0x330], ebx
mov dword [ebp - 0x32c], ebx
cmp eax, 0xa
jb 0x5dbe1b
pop esi
lea eax, [ebx + 1]
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0057371d
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x31c], eax
inc eax
push edi
mov dword [esi + 0x65e8], eax
xor edi, edi
lea ecx, [ebp - 0x2a4]
mov edi, edi
xor eax, eax
xor edx, edx
cmp eax, edi
sete dl
inc eax
add ecx, 8
mov dword [ebp - 0x308], edx
fild dword [ebp - 0x308]
fstp qword [ecx - 8]
cmp eax, 4
jl 0x5dbe35
inc edi
cmp edi, 4
jl 0x5dbe33
push esi
call fcn.005c5ce3
movzx eax, ax
add esp, 4
cmp eax, 0x200
jbe 0x5dbe83
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0057371d
mov esp, ebp
pop ebp
ret
cmp eax, ebx
je 0x5dd532
jmp 0x5dbe93
mov ebx, dword [ebp + 0xc]
dec eax
mov dword [ebp - 0x328], eax
lea eax, [ebp - 0x340]
push eax
lea ecx, [ebp - 0x314]
push ecx
lea edx, [ebp - 0x310]
push edx
lea eax, [ebp - 0x344]
push eax
push ebx
push esi
call fcn.005d5c63
mov edi, dword [ebp - 0x344]
add esp, 0x18
cmp edi, 0x827d
ja 0x5dc748
je 0x5dc72c
cmp edi, 0x26
ja 0x5dbf9f
cmp edi, 0x24
jae 0x5dbf7b
lea eax, [edi - 2]
cmp eax, 0x15
ja 0x5dd431
movzx ecx, byte [eax + 0x1008cb90]
jmp dword [ecx*4 + 0x1008cb78]
push esi
call fcn.005c5ce3
movzx ecx, ax
mov dword [ebp - 0x308], ecx
add esp, 4
fild dword [ebp - 0x308]
fstp dword [esi + edi*4 + 0xe6e4]
jmp 0x5dd431
cmp edi, 0x131
ja 0x5dc393
je 0x5dc2c7
add edi, 0xffffffd9
cmp edi, 0xfc
ja 0x5dd431
movzx edx, byte [edi + 0x1008cbec]
jmp dword [edx*4 + 0x1008cba8]
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [eax + 0x10]
push 0x40
lea ecx, [ebp - 0x54]
push ecx
push edx
call eax
push 5
lea ecx, [ebp - 0x54]
push 0x1010c714
push ecx
call fcn.00575e64
add esp, 0x18
test eax, eax
je 0x5dc384
push 5
lea edx, [ebp - 0x54]
push 0x1010c70c
push edx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5dc384
push 5
lea eax, [ebp - 0x54]
push 0x1010c704
push eax
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5dc384
push 6
lea ecx, [ebp - 0x54]
push 0x1010c6fc
push ecx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5dc384
push 0xa
lea edx, [ebp - 0x54]
push 0x1010c6f0
push edx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5dc384
mov ecx, 0x1010c6d4
lea eax, [ebp - 0x54]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5dc377
test dl, dl
je 0x5dc373
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5dc377
add eax, 2
add ecx, 2
test dl, dl
jne 0x5dc357
xor eax, eax
jmp 0x5dc37c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5dd431
mov dword [esi + 0x6614], 0
jmp 0x5dd431
cmp edi, 0x202
ja 0x5dc5aa
je 0x5dc58c
add edi, 0xfffffece
cmp edi, 0xcf
ja 0x5dd431
movzx eax, byte [edi + 0x1008cd10]
jmp dword [eax*4 + 0x1008ccec]
push esi
call fcn.005c5d83
mov ecx, dword [ebp - 0x31c]
lea edx, [ecx + ecx*8]
add esp, 4
mov dword [esi + edx*4 + 0x6110], eax
jmp 0x5dd431
cmp edi, 0x7221
ja 0x5dc682
je 0x5dc66e
sub edi, 0x7010
je 0x5dc5fb
sub edi, 0x1f0
je 0x5dc5e7
dec edi
jne 0x5dd431
push esi
call fcn.005c5d83
add esp, 4
mov dword [ebp - 0x330], eax
jmp 0x5dd431
push esi
call fcn.005c5d83
add esp, 4
mov dword [ebp - 0x334], eax
jmp 0x5dd431
xor edi, edi
lea ebx, [ebx]
push esi
call fcn.005c5ce3
inc edi
add esp, 4
shr eax, 2
and eax, 0xfff
mov dword [ebp + edi*4 - 0x16c], eax
cmp edi, 4
jl 0x5dc603
xor ecx, ecx
mov edi, dword [ebp + ecx*4 - 0x16c]
inc edi
cmp edi, dword [ebp + ecx*4 - 0x168]
jg 0x5dc663
mov eax, dword [ebp + ecx*4 - 0x168]
mov ebx, 1
sub eax, edi
shl bx, cl
lea edx, [esi + edi*2 + 0x6764]
inc eax
lea ebx, [ebx]
mov di, word [edx - 2]
add di, bx
mov word [edx], di
add edx, 2
dec eax
jne 0x5dc653
inc ecx
cmp ecx, 5
jl 0x5dc623
jmp 0x5dd431
push esi
call fcn.005c5d83
add esp, 4
mov dword [ebp - 0x32c], eax
jmp 0x5dd431
sub edi, 0x7250
je 0x5dc709
sub edi, 0xb3
je 0x5dc6d3
sub edi, 0x10
jne 0x5dd431
lea esp, [esp]
push esi
call fcn.005c5ce3
movzx eax, ax
mov ecx, edi
sar ecx, 1
mov dword [ebp - 0x308], eax
xor ecx, edi
inc edi
fild dword [ebp - 0x308]
add esp, 4
fstp dword [esi + ecx*4 + 0xe774]
cmp edi, 4
jl 0x5dc6a3
jmp 0x5dd431
xor edi, edi
push esi
call fcn.005c5ce3
movzx edx, ax
xor eax, eax
add esp, 4
cmp edi, 2
setl al
mov dword [ebp - 0x308], edx
fild dword [ebp - 0x308]
xor eax, edi
inc edi
fstp dword [esi + eax*4 + 0xe774]
cmp edi, 4
jl 0x5dc6d5
jmp 0x5dd431
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 0x18]
push edx
call eax
push eax
push esi
call fcn.005de043
add esp, 0xc
xor ecx, ecx
mov word [esi + 0x66b2], cx
jmp 0x5dd431
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx + 0x10]
push 0x40
lea eax, [esi + 0x6505]
push eax
push ecx
call edx
add esp, 0xc
jmp 0x5dd431
cmp edi, 0xc51a
ja 0x5dcdfa
je 0x5dcdb7
cmp edi, 0x8773
ja 0x5dc992
je 0x5dcf18
cmp edi, 0x85ff
ja 0x5dc7f9
je 0x5dc941
add edi, 0xffff7d72
cmp edi, 0xf
ja 0x5dd431
movzx eax, byte [edi + 0x1008cdf4]
jmp dword [eax*4 + 0x1008cde0]
cmp edi, 0x8606
ja 0x5dc95e
je 0x5dc92c
sub edi, 0x8602
je 0x5dc8e9
dec edi
jne 0x5dd431
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx]
push 7
push 1
lea eax, [ebp - 0x54]
push eax
push ecx
call edx
push 6
lea eax, [ebp - 0x54]
push 0x1010c6b8
push eax
call fcn.00575e64
add esp, 0x1c
test eax, eax
jne 0x5dd431
xor ebx, ebx
lea ecx, [esi + 0xe7c4]
mov dword [esi + 0x66d0], 4
mov dword [esi + 0x6604], ebx
mov dword [ebp - 0x308], ecx
xor edi, edi
mov edx, dword [esi]
mov eax, edi
xor eax, 1
add eax, ebx
lea ecx, [esi + eax*4 + 0xe7c4]
mov eax, dword [esi + 4]
push ecx
mov ecx, dword [edx + 0x20]
push 0x1010c2fc
push eax
call ecx
inc edi
add esp, 0xc
cmp edi, 4
jl 0x5dc86b
cmp dword [esi + 0xdc], 0
je 0x5dc8d5
mov edx, dword [ebp - 0x308]
fldz
mov eax, edx
mov ecx, 4
fadd dword [eax]
add eax, 4
dec ecx
jne 0x5dc8ab
fstp dword [ebp - 0x318]
mov eax, edx
fld dword [ebp - 0x318]
mov ecx, 4
fld dword [eax]
add eax, 4
dec ecx
fdiv st(1)
fstp dword [eax - 4]
jne 0x5dc8c6
fstp st(0)
add dword [ebp - 0x308], 0x10
add ebx, 4
cmp ebx, 0xc
jl 0x5dc869
jmp 0x5dd431
xor edi, edi
push esi
call fcn.005c5ce3
movzx edx, ax
mov dword [ebp - 0x308], edx
mov eax, edi
xor eax, 1
fild dword [ebp - 0x308]
inc edi
add esp, 4
fdivr qword [0x1010c6b0]
fstp dword [ebp - 0x308]
fld dword [ebp - 0x308]
fstp dword [esi + eax*4 + 0xe774]
cmp edi, 4
jl 0x5dc8eb
jmp 0x5dd431
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 0x18]
push edx
call eax
push eax
push esi
call fcn.005d7743
add esp, 0xc
mov ecx, dword [0x10107b54]
mov dword [esi + 0x6485], ecx
mov dl, byte [0x10107b58]
mov byte [esi + 0x6489], dl
jmp 0x5dd431
cmp edi, 0x8769
jne 0x5dd431
mov edi, dword [esi]
push 0
push esi
call fcn.005c5d83
mov ecx, dword [edi + 8]
add eax, ebx
add esp, 4
push eax
mov eax, dword [esi + 4]
push eax
call ecx
push ebx
push esi
call fcn.005d72d3
add esp, 0x14
jmp 0x5dd431
cmp edi, 0x9218
ja 0x5dcaaf
je 0x5dca40
cmp edi, 0x920a
ja 0x5dca19
je 0x5dc9fe
cmp edi, 0x8825
je 0x5dc9d6
cmp edi, 0x9102
jne 0x5dd431
push esi
call fcn.005c5d83
add esp, 4
mov dword [esi + 0x65ac], eax
jmp 0x5dd431
mov edi, dword [esi]
push 0
push esi
call fcn.005c5d83
mov edx, dword [esi + 4]
add eax, ebx
add esp, 4
push eax
mov eax, dword [edi + 8]
push edx
call eax
push ebx
push esi
call fcn.005d7533
add esp, 0x14
jmp 0x5dd431
mov ecx, dword [ebp - 0x310]
push ecx
push esi
call fcn.005c5e03
fstp dword [esi + 0x659c]
add esp, 8
jmp 0x5dd431
cmp edi, 0x9211
jne 0x5dd431
mov edx, dword [ebp - 0x310]
push edx
push esi
call fcn.005c5dc3
add esp, 8
mov dword [esi + 0x65a8], eax
jmp 0x5dd431
lea eax, [esi + 0xe7c4]
mov dword [esi + 0x6604], 0
mov dword [ebp - 0x308], eax
mov dword [ebp - 0x318], 3
lea ecx, [ecx]
mov ecx, dword [ebp - 0x310]
push ecx
push esi
call fcn.005c5e03
fstp st(0)
mov edi, dword [ebp - 0x308]
add esp, 8
mov ebx, 3
lea ecx, [ecx]
mov edx, dword [ebp - 0x310]
push edx
push esi
call fcn.005c5e03
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x5dca83
add dword [ebp - 0x308], 0x10
dec dword [ebp - 0x318]
jne 0x5dca63
jmp 0x5dd431
cmp edi, 0xb4c7
ja 0x5dccfe
je 0x5dcb13
cmp edi, 0xb4c3
jne 0x5dd431
mov eax, dword [0x1010c6a4]
mov dword [esi + 0x6485], eax
mov cx, word [0x1010c6a8]
mov eax, dword [esi]
mov word [esi + 0x6489], cx
mov dl, byte [0x1010c6aa]
mov ecx, dword [esi + 4]
mov byte [esi + 0x648b], dl
mov edx, dword [eax + 0x18]
push ecx
call edx
mov dword [esi + 0x65c0], eax
mov eax, dword [ebp - 0x314]
add esp, 4
mov dword [ebp - 0x324], eax
jmp 0x5dd431
cmp dword [ebp - 0x324], 0
je 0x5dd431
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x4e
push edx
call eax
push esi
call fcn.005c5d83
push esi
mov word [esi + 0x66b2], ax
call fcn.005c5d83
push esi
mov word [esi + 0x66b0], ax
call fcn.005c5d83
and eax, 7
push esi
mov word [esi + 0x66ba], ax
call fcn.005c5d83
mov cx, word [esi + 0x66b2]
and eax, 7
sub cx, ax
sub cx, word [esi + 0x66ba]
push esi
mov word [esi + 0x66b6], cx
call fcn.005c5d83
and eax, 7
push esi
mov word [esi + 0x66b8], ax
call fcn.005c5d83
mov dx, word [esi + 0x66b0]
and eax, 7
sub dx, ax
sub dx, word [esi + 0x66b8]
mov eax, 0x1c5e
add esp, 0x24
mov word [esi + 0x66b4], dx
cmp word [esi + 0x66b2], ax
jne 0x5dcbd2
mov eax, 7
mov dword [esi + 0x66b4], 0x1c4c1544
mov word [esi + 0x66ba], ax
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x34
push edx
call eax
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 3
lea esp, [esp]
push 0xb
push esi
call fcn.005c5e03
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x5dcbf3
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x72
push edx
call eax
push esi
call fcn.005c5ce3
movzx edi, word [esi + 0x66b6]
movzx ebx, word [esi + 0x66b4]
movzx eax, ax
mov edx, ebx
mov ecx, edi
imul ecx, edx
shr eax, 7
imul eax, eax, 0x5a
lea ecx, [ecx + ecx*2]
add ecx, ecx
add esp, 0x10
mov dword [esi + 0x66c8], eax
cmp ecx, dword [ebp - 0x324]
jne 0x5dcc88
cdq
mov ecx, 0xb4
idiv ecx
cmp edx, 0x5a
jne 0x5dcc7a
mov eax, ebx
xor eax, edi
mov word [esi + 0x66b6], ax
movzx eax, ax
xor eax, ebx
xor word [esi + 0x66b6], ax
mov word [esi + 0x66b4], ax
xor eax, eax
mov dword [esi + 0x66c8], eax
mov dword [esi + 0x65b0], eax
movzx edx, word [esi + 0x66b4]
movzx ecx, word [esi + 0x66b6]
imul ecx, edx
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea ecx, [esi + 0x64c5]
push 0x1010c694
push ecx
call fcn.00573857
add esp, 0xc
cmp dword [esi + 0x65b0], 0
mov dword [esi + 0x2e7fc], 0x1007af10
je 0x5dccef
test byte [esi + 0x66ba], 1
je 0x5dcce5
mov dword [esi + 0x65b0], 0x61616161
mov dword [esi + 0x2e7fc], 0x1007b250
mov dword [esi + 0x65fc], 0xffff
jmp 0x5dd431
cmp edi, 0xc516
jb 0x5dd431
cmp edi, 0xc517
ja 0x5dd431
mov ebx, dword [ebp - 0x314]
push ebx
call fcn.0057652f
add esp, 4
mov dword [ebp - 0x308], eax
test eax, eax
je 0x5dd431
mov edx, dword [esi]
mov ecx, dword [edx]
push ebx
mov edi, eax
mov eax, dword [esi + 4]
push 1
push edi
push eax
call ecx
add esp, 0x10
dec edi
je 0x5dcda3
add ebx, dword [ebp - 0x308]
lea esp, [esp]
cmp edi, ebx
jae 0x5dcda3
push 8
inc edi
push 0x1010c688
push edi
call fcn.00575e64
add esp, 0xc
test eax, eax
jne 0x5dcd92
lea eax, [esi + 0xe77c]
push eax
lea ecx, [esi + 0xe778]
push ecx
lea edx, [esi + 0xe774]
push edx
lea eax, [edi + 8]
push 0x1010c67c
push eax
call fcn.00575a08
add esp, 0x14
push 0xa
push edi
call fcn.00574ca3
mov edi, eax
add esp, 8
test edi, edi
jne 0x5dcd53
mov ecx, dword [ebp - 0x308]
push ecx
call fcn.00575960
add esp, 4
jmp 0x5dd431
cmp byte [esi + 0x6485], 0
jne 0x5dd431
mov edx, dword [0x1010c670]
mov dword [esi + 0x6485], edx
mov eax, dword [0x1010c674]
mov dword [esi + 0x6489], eax
mov cx, word [0x1010c678]
mov word [esi + 0x648d], cx
mov dl, byte [0x1010c67a]
mov byte [esi + 0x648f], dl
jmp 0x5dd431
cmp edi, 0xc612
ja 0x5dcee9
je 0x5dcea0
cmp edi, 0xc51b
jne 0x5dd431
movsx eax, word [esi + 0x6274]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov dword [ebp - 0x318], eax
mov eax, dword [ecx + 0x18]
push edx
call eax
mov ecx, dword [esi + 0x65e8]
push esi
mov ebx, eax
mov dword [ebp - 0x308], ecx
call fcn.005c5ce3
push esi
mov word [esi + 0x6274], ax
call fcn.005c5ce3
mov edi, dword [esi]
add esp, 0xc
push 0
push esi
call fcn.005c5d83
mov edx, dword [esi + 4]
add eax, ebx
add esp, 4
push eax
mov eax, dword [edi + 8]
push edx
call eax
push ebx
push esi
call fcn.005dbd43
mov ecx, dword [ebp - 0x308]
mov dx, word [ebp - 0x318]
add esp, 0x14
mov dword [esi + 0x65fc], 0xffff
mov dword [esi + 0x65e8], ecx
mov word [esi + 0x6274], dx
jmp 0x5dd431
mov edi, 4
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 0x1c]
push ecx
call edx
mov ecx, dword [esi + 0x6618]
shl ecx, 8
add eax, ecx
add esp, 4
dec edi
mov dword [esi + 0x6618], eax
jne 0x5dcea5
cmp byte [esi + 0x6485], 0
jne 0x5dceda
mov dword [esi + 0x6485], 0x474e44
mov dword [esi + 0x6614], 1
jmp 0x5dd431
cmp edi, 0xfd04
ja 0x5dd30c
je 0x5dd2c4
lea eax, [edi - 0xc616]
cmp eax, 0x79
ja 0x5dd431
movzx edx, byte [eax + 0x1008ce44]
jmp dword [edx*4 + 0x1008ce04]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 0x18]
push ecx
call edx
mov dword [esi + 0x65cc], eax
mov eax, dword [ebp - 0x314]
add esp, 4
mov dword [esi + 0x65d8], eax
jmp 0x5dd431
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x10
push edx
call eax
push esi
call fcn.005c5d83
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push 1
mov dword [esi + 0x65c0], eax
mov eax, dword [ecx + 8]
push 0x1c
push edx
call eax
push esi
call fcn.005c5d83
add esp, 0x20
add dword [esi + 0x65c0], eax
mov dword [esi + 0x2e7fc], 0x1007af80
jmp 0x5dd431
cmp edi, 0xfd09
jne 0x5dd431
mov ebx, dword [ebp - 0x314]
mov dword [ebp - 0x338], ebx
cmp ebx, 0x10
jbe 0x5dd334
mov ebx, 0x10
mov dword [ebp - 0x338], ebx
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [ecx]
push ebx
push 1
lea edx, [ebp - 0x14]
push edx
push eax
call ecx
xor edi, edi
add esp, 0x10
xor edx, edx
mov dword [esi + 0x66d0], edi
cmp ebx, edi
jle 0x5dd3c5
mov dword [ebp - 0x308], edx
lea ecx, [ecx]
mov cl, byte [ebp + edx - 0x14]
mov ebx, dword [ebp - 0x338]
mov eax, 1
shl eax, cl
mov ecx, edi
and ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
add dword [ebp - 0x308], ecx
inc edx
or edi, eax
cmp edx, ebx
jl 0x5dd363
mov edx, dword [ebp - 0x308]
mov dword [esi + 0x66d0], edx
cmp edi, 0x38
jne 0x5dd3b6
mov ax, word [0x1010c66c]
mov cl, byte [0x1010c66e]
mov word [ebp - 0x320], ax
mov byte [ebp - 0x31e], cl
jmp 0x5dd3c5
cmp edi, 0x3a
jne 0x5dd3c5
mov dword [ebp - 0x320], 0x1040305
xor eax, eax
cmp dword [esi + 0x66d0], eax
jle 0x5dd3f7
mov ecx, dword [esi + 0x66d0]
jmp 0x5dd3e3
movzx edx, byte [ebp + eax - 0x320]
mov byte [ebp + edx - 0x154], al
inc eax
cmp eax, ecx
jl 0x5dd3e3
mov byte [esi + eax + 0x6280], 0
mov edi, dword [esi + 0x65b0]
mov ecx, 0x10
dec ecx
xor edx, edx
mov eax, ecx
div ebx
lea edi, [edi*4]
movzx eax, byte [ebp + edx - 0x14]
movzx edx, byte [ebp + eax - 0x154]
or edi, edx
test ecx, ecx
jne 0x5dd40a
mov dword [esi + 0x65b0], edi
mov edx, dword [ebp - 0x340]
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [ecx + 8]
push 0
push edx
push eax
call ecx
mov eax, dword [ebp - 0x328]
add esp, 0xc
test eax, eax
jne 0x5dbe93
mov eax, dword [ebp - 0x330]
test eax, eax
je 0x5dd530
push eax
call fcn.0057652f
mov edi, eax
add esp, 4
test edi, edi
je 0x5dd530
mov ebx, dword [ebp - 0x334]
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 8]
push 0
push ebx
push eax
call ecx
mov eax, dword [ebp - 0x330]
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx]
push 1
push eax
push edi
push ecx
call edx
mov eax, dword [ebp - 0x32c]
mov ecx, dword [ebp - 0x330]
push eax
push 1
shr ecx, 2
push ecx
push edi
call fcn.005cefe3
mov edx, dword [esi]
mov eax, dword [esi + 4]
add esp, 0x2c
mov dword [ebp - 0x328], edx
mov dword [ebp - 0x340], eax
mov dword [esi], 0x1014b688
call fcn.0064bbbb
mov dword [esi + 4], eax
test eax, eax
je 0x5dd516
mov edx, dword [ebp - 0x330]
mov ecx, dword [esi]
push 1
push edx
push edi
push eax
mov eax, dword [ecx + 4]
call eax
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 0
push 0
push edx
call eax
neg ebx
push ebx
push esi
call fcn.005dbd43
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 0xc]
push edx
call eax
add esp, 0x28
mov ecx, dword [ebp - 0x328]
mov edx, dword [ebp - 0x340]
push edi
mov dword [esi], ecx
mov dword [esi + 4], edx
call fcn.00575960
add esp, 4
xor ebx, ebx
cmp dword [esi + 0x66d0], ebx
jle 0x5dd572
mov ebx, dword [esi + 0x66d0]
lea edi, [ebp - 0x2a4]
lea ecx, [ebp - 0x1c4]
lea esp, [esp]
mov edx, dword [esi + 0x66d0]
mov eax, edi
fld qword [ecx]
add eax, 8
dec edx
fmul qword [eax - 8]
fstp qword [eax - 8]
jne 0x5dd55b
add ecx, 8
add edi, 0x20
dec ebx
jne 0x5dd553
cmp dword [ebp - 0x33c], 0
je 0x5dd61e
cmp dword [esi + 0x66d0], 0
jle 0x5dd60e
mov ecx, dword [esi + 0x66d0]
fldz
lea eax, [ebp - 0x2a4]
mov dword [ebp - 0x324], eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x334], ecx
xor edx, edx
mov dword [ebp - 0x32c], edx
mov ecx, dword [ebp - 0x324]
fst qword [eax]
mov edi, dword [esi + 0x66d0]
fld qword [eax]
lea ebx, [ebp + edx - 0x184]
lea edx, [ebp + edx - 0x304]
fld qword [edx]
add ecx, 8
fmul qword [ecx - 8]
add edx, 0x18
dec edi
fmul qword [ebx]
faddp st(1)
jne 0x5dd5d2
mov edx, dword [ebp - 0x32c]
fstp qword [eax]
add edx, 8
add eax, 8
mov dword [ebp - 0x32c], edx
cmp edx, 0x18
jl 0x5dd5b4
add dword [ebp - 0x324], 0x20
dec dword [ebp - 0x334]
jne 0x5dd5ac
fstp st(0)
lea ecx, [ebp - 0x224]
push ecx
push esi
call fcn.005d0e93
add esp, 8
fld qword [ebp - 0x1a4]
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x5dd66f
fldz
xor eax, eax
fstp dword [esi + 0xe780]
cmp dword [esi + 0x66d0], eax
jle 0x5dd66f
fld1
lea ecx, [esi + 0xe774]
fld qword [ebp + eax*8 - 0x1a4]
inc eax
fstp dword [ebp - 0x328]
add ecx, 4
fld dword [ebp - 0x328]
fdivr st(1)
fstp dword [ecx - 4]
cmp eax, dword [esi + 0x66d0]
jl 0x5dd649
fstp st(0)
cmp dword [ebp - 0x33c], 0
jne 0x5dd6b5
xor edx, edx
cmp dword [esi + 0x66d0], edx
jle 0x5dd6b5
lea ecx, [ebp - 0x2a4]
lea eax, [esi + 0xe784]
jmp 0x5dd693
fld dword [eax]
inc edx
fld qword [ecx]
add eax, 4
fstp dword [ebp - 0x328]
add ecx, 0x28
fdiv dword [ebp - 0x328]
fstp dword [eax - 4]
cmp edx, dword [esi + 0x66d0]
jl 0x5dd693
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.0057371d
mov esp, ebp
pop ebp
ret