Function at 0x5d5d83
Capabilities:
Check for software breakpoints
Encode data using xor
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x19c
mov eax, dword [0x10148050]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
movzx eax, word [esi + 0x6274]
mov ecx, dword [esi]
mov ecx, dword [ecx]
push edi
push 0xa
push 1
lea edx, [ebp - 0x10]
xor edi, edi
mov dword [ebp - 0x198], eax
mov eax, dword [esi + 4]
push edx
push eax
mov dword [ebp - 0x184], edi
mov dword [ebp - 0x190], edi
mov dword [ebp - 0x18c], edi
xor ebx, ebx
mov dword [ebp - 0x158], edi
call ecx
push 3
lea edx, [ebp - 0x10]
push 0x1010c24c
push edx
call fcn.00575e64
add esp, 0x1c
test eax, eax
je 0x5d71d0
push 3
lea eax, [ebp - 0x10]
push 0x1010c248
push eax
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d71d0
push 4
lea ecx, [ebp - 0x10]
push 0x1010c240
push ecx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d71d0
push 4
lea edx, [ebp - 0x10]
push 0x1010c238
push edx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d71d0
push 2
lea eax, [ebp - 0x10]
push 0x1010c234
push eax
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d70da
push 3
lea ecx, [ebp - 0x10]
push 0x1010c230
push ecx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d70da
mov ecx, 0x1010c228
lea eax, [ebp - 0x10]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d5ea3
test dl, dl
je 0x5d5e9f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d5ea3
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d5e83
xor eax, eax
jmp 0x5d5ea8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5d5ef9
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0x18]
push eax
call ecx
push esi
mov dword [ebp + 0xc], eax
call fcn.005c5ce3
push esi
mov word [esi + 0x6274], ax
call fcn.005c5ce3
add esp, 0xc
cmp ax, 0x2a
jne 0x5d71c2
push esi
call fcn.005c5d83
mov edx, dword [esi]
mov ecx, dword [edx + 8]
add eax, 0xfffffff8
push 1
push eax
mov eax, dword [esi + 4]
push eax
call ecx
add esp, 0x10
jmp 0x5d6163
mov ecx, 0x10107500
lea eax, [ebp - 0x10]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d5f23
test dl, dl
je 0x5d5f1f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d5f23
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d5f03
xor eax, eax
jmp 0x5d5f28
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5d5f67
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0x18]
push eax
call ecx
mov edx, dword [esi]
mov ecx, dword [edx + 8]
sub eax, 0xa
push 1
mov dword [ebp + 0xc], eax
mov eax, dword [esi + 4]
push 0xfffffffffffffffe
push eax
call ecx
push esi
call fcn.005c5ce3
push esi
mov word [esi + 0x6274], ax
call fcn.005c5ce3
add esp, 0x18
jmp 0x5d6163
push 8
lea edx, [ebp - 0x10]
push 0x1010c21c
push edx
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d6145
push 4
lea eax, [ebp - 0x10]
push 0x1010c214
push eax
call fcn.00575e64
add esp, 0xc
test eax, eax
je 0x5d6145
mov ecx, 0x1010c208
lea eax, [ebp - 0x10]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d5fc5
test dl, dl
je 0x5d5fc1
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d5fc5
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d5fa5
xor eax, eax
jmp 0x5d5fca
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6145
mov ecx, 0x1010c200
lea eax, [ebp - 0x10]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d5ffa
test dl, dl
je 0x5d5ff6
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d5ffa
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d5fda
xor eax, eax
jmp 0x5d5fff
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6134
mov ecx, 0x1010c1f8
lea eax, [ebp - 0x10]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d6033
test dl, dl
je 0x5d602f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d6033
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d6013
xor eax, eax
jmp 0x5d6038
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6134
mov ecx, 0x1010c1f0
lea eax, [ebp - 0x10]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d6068
test dl, dl
je 0x5d6064
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d6068
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d6048
xor eax, eax
jmp 0x5d606d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6134
mov ecx, 0x10107518
lea eax, [ebp - 0x10]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d60a3
test dl, dl
je 0x5d609f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d60a3
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d6083
xor eax, eax
jmp 0x5d60a8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6134
mov ecx, 0x1010c1ec
lea eax, [ebp - 0x10]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d60d8
test dl, dl
je 0x5d60d4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d60d8
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d60b8
xor eax, eax
jmp 0x5d60dd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6123
mov ecx, 0x1010c1e8
lea eax, [ebp - 0x10]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d6109
test dl, dl
je 0x5d6105
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d6109
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d60e9
xor eax, eax
jmp 0x5d610e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5d6123
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0xfffffffffffffff6
push edx
call eax
jmp 0x5d6160
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0xfffffffffffffffc
push edx
call eax
jmp 0x5d6160
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0xfffffffffffffffe
push edx
call eax
jmp 0x5d6160
mov edx, dword [esi]
mov eax, dword [esi + 4]
push 1
mov ecx, 0x4949
mov word [esi + 0x6274], cx
mov ecx, dword [edx + 8]
push 2
push eax
call ecx
add esp, 0xc
push esi
call fcn.005c5ce3
movzx eax, ax
add esp, 4
cmp eax, 0x3e8
ja 0x5d71d0
test eax, eax
je 0x5d71c2
mov edi, dword [ebp + 0x10]
shl edi, 0x10
mov dword [ebp - 0x19c], edi
jmp 0x5d6199
mov edi, dword [ebp - 0x19c]
dec eax
mov dword [ebp - 0x188], eax
lea edx, [ebp - 0x194]
push edx
lea eax, [ebp - 0x170]
push eax
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x16c]
push ecx
lea edx, [ebp - 0x178]
push edx
push eax
push esi
call fcn.005d5c63
mov ebx, dword [ebp - 0x178]
or ebx, edi
add esp, 0x18
mov dword [ebp - 0x178], ebx
cmp ebx, 2
jne 0x5d6221
lea ecx, [esi + 0x6485]
push 0x10107520
push ecx
call fcn.00574c03
add esp, 8
test eax, eax
je 0x5d6561
push esi
call fcn.005c5ce3
push esi
call fcn.005c5ce3
movzx edx, ax
mov dword [ebp - 0x168], edx
add esp, 8
fild dword [ebp - 0x168]
fstp dword [esi + 0x6590]
jmp 0x5d6561
mov eax, 4
cmp ebx, eax
jne 0x5d6388
mov eax, dword [ebp - 0x170]
add eax, 0xffffffe5
cmp eax, 7
ja 0x5d6561
push esi
call fcn.005c5d83
push esi
call fcn.005c5ce3
movzx ecx, ax
add esp, 8
cmp ecx, 0x7fff
je 0x5d62b2
fld dword [esi + 0x6590]
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x5d62b2
mov dword [ebp - 0x174], ecx
fild dword [ebp - 0x174]
test ecx, ecx
jns 0x5d6281
fadd qword [0x101430c8]
fmul qword [0x1010c1e0]
fsub qword [0x101430a8]
fld qword [0x10105338]
fxch st(1)
call fcn.0064b163
fstp dword [ebp - 0x168]
fld dword [ebp - 0x168]
fmul qword [0x1010c1d8]
fstp dword [esi + 0x6590]
push esi
call fcn.005c5ce3
push esi
call fcn.005c5ce3
movzx ecx, ax
add esp, 8
cmp ecx, 0x7fff
je 0x5d630c
fld dword [esi + 0x6598]
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x5d630c
mov dword [ebp - 0x174], ecx
fild dword [ebp - 0x174]
test ecx, ecx
jns 0x5d62f3
fadd qword [0x101430c8]
fmul qword [0x1010c1d0]
fld qword [0x10105338]
fxch st(1)
call fcn.0064b163
fstp dword [esi + 0x6598]
push esi
call fcn.005c5ce3
movzx ecx, ax
add esp, 4
cmp ecx, 0xffff
je 0x5d6359
fld dword [esi + 0x6594]
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x5d6359
movsx ecx, cx
mov dword [ebp - 0x168], ecx
fild dword [ebp - 0x168]
fmul qword [0x1010c1c8]
fld qword [0x10105338]
fxch st(1)
call fcn.0064b163
fstp dword [esi + 0x6594]
push esi
call fcn.005c5ce3
push esi
call fcn.005c5ce3
movzx edx, ax
push esi
mov dword [ebp - 0x18c], edx
call fcn.005c5ce3
push esi
call fcn.005c5ce3
movzx eax, ax
mov dword [esi + 0x65a8], eax
jmp 0x5d655e
cmp ebx, 7
jne 0x5d63c3
cmp dword [ebp - 0x16c], 2
jne 0x5d6561
cmp dword [ebp - 0x170], 0x14
jbe 0x5d6561
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [ecx + 0x10]
push 0x40
lea edx, [esi + 0x6505]
push edx
push eax
call ecx
add esp, 0xc
jmp 0x5d6561
cmp ebx, 8
jne 0x5d63e8
cmp dword [ebp - 0x16c], eax
jne 0x5d6561
push esi
call fcn.005c5d83
add esp, 4
mov dword [esi + 0x65a8], eax
jmp 0x5d6561
cmp ebx, 9
jne 0x5d643f
mov ecx, 0x10107528
lea eax, [esi + 0x6485]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5d6418
test dl, dl
je 0x5d6414
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5d6418
add eax, 2
add ecx, 2
test dl, dl
jne 0x5d63f8
xor eax, eax
jmp 0x5d641d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5d6561
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx]
push 1
push 0x40
lea eax, [esi + 0x6545]
push eax
push ecx
call edx
jmp 0x5d655e
cmp ebx, 0xc
jne 0x5d6475
cmp dword [ebp - 0x170], eax
jne 0x5d6561
mov edi, dword [ebp - 0x16c]
push edi
push esi
call fcn.005c5e03
fstp dword [esi + 0xe774]
push edi
push esi
call fcn.005c5e03
fstp dword [esi + 0xe77c]
jmp 0x5d655e
cmp ebx, 0x10
jne 0x5d649a
cmp dword [ebp - 0x16c], eax
jne 0x5d6561
push esi
call fcn.005c5d83
add esp, 4
mov dword [esi + 0x65b8], eax
jmp 0x5d6561
cmp ebx, 0x11
jne 0x5d64fe
cmp dword [esi + 0x6614], 0
je 0x5d6561
push 5
lea eax, [esi + 0x6485]
push 0x10107520
push eax
call fcn.00575e64
add esp, 0xc
test eax, eax
jne 0x5d6561
mov eax, dword [esi]
push 0
push esi
mov dword [ebp - 0x168], eax
call fcn.005c5d83
mov edi, dword [ebp + 0xc]
mov ecx, dword [esi + 4]
add eax, edi
add esp, 4
push eax
mov eax, dword [ebp - 0x168]
mov edx, dword [eax + 8]
push ecx
call edx
push edi
push esi
call fcn.005dbd43
add esp, 0x14
jmp 0x5d6561
cmp ebx, 0x14
jne 0x5d6532
cmp dword [ebp - 0x170], 0xa00
jne 0x5d6561
cmp dword [ebp - 0x16c], 7
jne 0x5d6561
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 8]
push 1
push 0x4e0
push ecx
call edx
add esp, 0xc
jmp 0x5d6eb8
cmp ebx, 0x15
jne 0x5d6561
cmp dword [ebp - 0x16c], 2
jne 0x5d6561
cmp dword [esi + 0x6614], 0
je 0x5d6561
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [eax]
push 1
push 0x40
lea ecx, [esi + 0x64c5]
push ecx
push edx
call eax
add esp, 0x10
lea ecx, [esi + 0x6485]
push 0x101074f8
push ecx
call fcn.00574c03
add esp, 8
test eax, eax
je 0x5d65ad
cmp ebx, 0x1b
jne 0x5d6593
mov dword [ebp - 0x178], 0x1018
mov ebx, dword [ebp - 0x178]
jmp 0x5d6e83
cmp ebx, 0x1c
jne 0x5d65ad
mov dword [ebp - 0x178], 0x1017
mov ebx, dword [ebp - 0x178]
jmp 0x5d6e4f
cmp ebx, 0x1d
jne 0x5d6621
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0x1c]
push eax
call ecx
mov edi, eax
add esp, 4
test edi, edi
je 0x5d6f09
cmp edi, 0xffffffff
je 0x5d6f09
push edi
call fcn.00575554
add esp, 4
test eax, eax
je 0x5d65e5
add edi, 0xffffffd0
jmp 0x5d65f6
mov eax, 0xcccccccd
mul edi
shr edx, 3
lea edx, [edx + edx*4]
add edx, edx
sub edi, edx
mov eax, dword [ebp - 0x190]
mov edx, dword [esi]
lea eax, [eax + eax*4]
lea ecx, [edi + eax*2]
mov eax, dword [esi + 4]
mov dword [ebp - 0x190], ecx
mov ecx, dword [edx + 0x1c]
push eax
call ecx
mov edi, eax
add esp, 4
test edi, edi
jne 0x5d65ca
jmp 0x5d6f09
cmp ebx, 0x81
jne 0x5d6684
mov eax, dword [ebp - 0x16c]
cmp eax, 4
jne 0x5d670d
push esi
call fcn.005c5d83
mov edx, dword [esi]
mov dword [esi + 0x65c0], eax
mov ecx, dword [edx + 8]
add eax, 0x29
push 0
push eax
mov eax, dword [esi + 4]
push eax
call ecx
push esi
call fcn.005c5ce3
add ax, ax
push esi
mov word [esi + 0x66b0], ax
call fcn.005c5ce3
add esp, 0x18
mov word [esi + 0x66b2], ax
mov dword [esi + 0x65b0], 0x61616161
jmp 0x5d6f09
cmp ebx, 0x29
jne 0x5d6717
cmp dword [ebp - 0x16c], 1
jne 0x5d6f09
mov eax, dword [ebp - 0x18c]
cmp eax, 0x12
jae 0x5d66b1
movsx eax, byte [eax + 0x1010c1b0]
sub eax, 0x30
jmp 0x5d66b3
xor eax, eax
mov edx, dword [esi]
mov ecx, dword [edx + 8]
shl eax, 5
add eax, 8
push 1
push eax
mov eax, dword [esi + 4]
push eax
call ecx
add esp, 0xc
xor edi, edi
lea esp, [esp]
push esi
call fcn.005c5d83
add esp, 4
mov dword [ebp - 0x174], eax
fild dword [ebp - 0x174]
test eax, eax
jns 0x5d66f2
fadd dword [0x10104610]
mov edx, edi
xor edx, 2
shr edx, 1
xor edx, edi
inc edi
fstp dword [esi + edx*4 + 0xe774]
cmp edi, 4
jb 0x5d66d3
jmp 0x5d6f09
cmp eax, 7
je 0x5d6748
jmp 0x5d6f09
cmp ebx, 0x100
jne 0x5d672d
cmp dword [ebp - 0x16c], 7
je 0x5d6748
jmp 0x5d6f09
cmp ebx, 0x280
jne 0x5d6768
cmp dword [ebp - 0x16c], 1
jne 0x5d6f09
mov ebx, dword [ebp - 0x178]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 0x18]
push ecx
call edx
mov dword [esi + 0x65c4], eax
mov eax, dword [ebp - 0x170]
add esp, 4
mov dword [esi + 0x65d0], eax
mov edi, dword [ebp - 0x184]
mov ecx, 4
cmp ebx, 0x88
jne 0x5d67ac
cmp dword [ebp - 0x16c], ecx
jne 0x5d6f09
push esi
call fcn.005c5d83
add esp, 4
mov dword [esi + 0x65c4], eax
test eax, eax
je 0x5d6f09
add eax, dword [ebp + 0xc]
mov dword [esi + 0x65c4], eax
jmp 0x5d6f09
cmp ebx, 0x89
jne 0x5d67d4
cmp dword [ebp - 0x16c], ecx
jne 0x5d6f09
push esi
call fcn.005c5d83
add esp, 4
mov dword [esi + 0x65d0], eax
jmp 0x5d6f09
cmp ebx, 0x8c
je 0x5d67e4
cmp ebx, 0x96
jne 0x5d67fd
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0x18]
push eax
call ecx
add esp, 4
mov dword [esi + 0x65c8], eax
mov ecx, 4
cmp ebx, 0x97
jne 0x5d6927
mov ebx, ecx
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0x1c]
push eax
call ecx
add esp, 4
dec ebx
lea edx, [edi + edi*4]
lea edi, [eax + edx*2 - 0x30]
jne 0x5d680b
mov eax, edi
sub eax, 0x64
mov dword [ebp - 0x184], edi
je 0x5d6888
sub eax, 2
je 0x5d687f
dec eax
jne 0x5d68da
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 8]
push 1
push 0x10
push ecx
call edx
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 4
push esi
call fcn.005c5ce3
movzx eax, ax
mov dword [ebp - 0x168], eax
add esp, 4
add edi, 4
dec ebx
fild dword [ebp - 0x168]
fstp dword [edi - 4]
jne 0x5d6859
jmp 0x5d6f09
push 1
push 6
jmp 0x5d703c
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x44
push edx
call eax
add esp, 0xc
xor edi, edi
lea esp, [esp]
push esi
call fcn.005c5ce3
movzx ecx, ax
mov edx, edi
and edx, 1
mov eax, edi
mov dword [ebp - 0x168], ecx
add edx, edx
shr eax, 1
fild dword [ebp - 0x168]
or edx, eax
inc edi
add esp, 4
fstp dword [esi + edx*4 + 0xe774]
cmp edi, 4
jb 0x5d68a3
jmp 0x5d6f09
cmp edi, 0xc8
jb 0x5d6f09
cmp dword [ebp - 0x184], 0xcd
je 0x5d6907
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x118
push edx
call eax
add esp, 0xc
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [ecx]
push 1
push 0x144
lea edx, [ebp - 0x154]
push edx
push eax
call ecx
add esp, 0x10
jmp 0x5d6f09
cmp ebx, 0xa4
jne 0x5d698a
cmp dword [ebp - 0x16c], 3
jne 0x5d6f09
mov eax, dword [ebp - 0x18c]
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx + 8]
lea eax, [eax + eax*2]
push 1
shl eax, 4
push eax
push ecx
call edx
add esp, 0xc
lea edi, [esi + 0xe774]
mov ebx, 3
push esi
call fcn.005c5ce3
movzx eax, ax
mov dword [ebp - 0x168], eax
add esp, 4
add edi, 4
dec ebx
fild dword [ebp - 0x168]
fstp dword [edi - 4]
jne 0x5d6964
jmp 0x5d6f09
cmp ebx, 0xa7
jne 0x5d6aad
add edi, 0xffffff38
cmp edi, 0xc
jae 0x5d6f09
fld dword [esi + 0xe774]
fldz
fucompp
fnstsw ax
test ah, 0x44
jp 0x5d6f09
mov ecx, dword [ebp - 0x190]
mov edx, dword [esi]
mov eax, dword [esi + 4]
and ecx, 0xff
mov bl, byte [ecx + 0x10109360]
mov ecx, dword [edx + 0x1c]
push eax
call ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x1c]
mov edi, eax
mov eax, dword [esi + 4]
push eax
call ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x1c]
xor edi, eax
mov eax, dword [esi + 4]
push eax
call ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x1c]
xor eax, edi
mov dword [ebp - 0x168], eax
mov eax, dword [esi + 4]
push eax
call ecx
xor eax, dword [ebp - 0x168]
add esp, 0x10
mov dl, byte [eax + 0x10109460]
mov byte [ebp - 0x17d], dl
mov dl, bl
add dl, dl
xor ecx, ecx
lea eax, [edx + ebx]
mov dl, byte [ebp - 0x17d]
shl al, 5
jmp 0x5d6a33
add dl, al
xor byte [ebp + ecx - 0x154], dl
inc ecx
add al, bl
cmp ecx, 0x144
jb 0x5d6a33
mov eax, dword [ebp - 0x184]
movsx eax, byte [eax + 0x1010c0d8]
sub eax, 0x30
mov ecx, eax
and ecx, 1
xor edi, edi
and eax, 0xfffffffe
mov dword [ebp - 0x17c], ecx
lea ebx, [ebp + eax - 0x154]
jmp 0x5d6a73
push ebx
push esi
call fcn.005c5ca3
mov edx, edi
shr edx, 1
xor edx, dword [ebp - 0x17c]
movzx ecx, ax
mov dword [ebp - 0x168], ecx
xor edx, edi
inc edi
fild dword [ebp - 0x168]
add esp, 8
add ebx, 2
fstp dword [esi + edx*4 + 0xe774]
cmp edi, 4
jb 0x5d6a73
jmp 0x5d6f09
cmp ebx, 0x200
jne 0x5d6b20
mov eax, dword [ebp - 0x170]
cmp eax, 3
jne 0x5d6ad7
push esi
call fcn.005c5d83
push esi
call fcn.005c5d83
mov dword [esi + 0x65a8], eax
jmp 0x5d6f06
cmp eax, ecx
jne 0x5d6f09
push esi
call fcn.005c5ce3
push esi
movzx edi, ax
call fcn.005c5ce3
movzx eax, ax
push esi
add edi, eax
call fcn.005c5ce3
movzx ecx, ax
push esi
add edi, ecx
call fcn.005c5ce3
movzx eax, ax
add eax, edi
cdq
and edx, 3
add eax, edx
add esp, 0x10
sar eax, 2
mov dword [esi + 0x65f8], eax
jmp 0x5d6f09
cmp ebx, 0x201
jne 0x5d6b39
cmp dword [ebp - 0x170], ecx
je 0x5d704a
jmp 0x5d6f09
cmp ebx, 0x220
jne 0x5d6b6b
cmp dword [ebp - 0x170], 0x35
jne 0x5d6f09
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 8]
push 1
push 0xe
push eax
call ecx
push esi
call fcn.005c8ce3
add esp, 0x10
jmp 0x5d6f09
cmp ebx, 0x401
jne 0x5d6bb0
cmp dword [ebp - 0x170], ecx
jne 0x5d6f09
push esi
call fcn.005c5d83
push esi
mov edi, eax
call fcn.005c5d83
push esi
add edi, eax
call fcn.005c5d83
push esi
add edi, eax
call fcn.005c5d83
add eax, edi
add esp, 0x10
shr eax, 2
mov dword [esi + 0x65f8], eax
jmp 0x5d6f09
cmp ebx, 0xe01
jne 0x5d6c79
movsx edx, word [esi + 0x6274]
mov ecx, dword [esi]
push 1
mov dword [ebp - 0x16c], edx
mov edx, dword [esi + 4]
mov eax, 0x4949
mov word [esi + 0x6274], ax
mov eax, dword [ecx + 8]
push 0x16
push edx
call eax
add esp, 0xc
cmp dword [ebp - 0x170], 0x2c
mov dword [ebp - 0x17c], 0x16
jbe 0x5d6c6b
push esi
call fcn.005c5d83
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push 1
mov ebx, eax
mov eax, dword [ecx + 8]
push 0xe
push edx
mov dword [ebp - 0x178], ebx
call eax
push esi
call fcn.005c5d83
add esp, 0x14
lea edi, [eax - 4]
cmp ebx, 0x76a43207
jne 0x5d6c3f
push esi
call fcn.005c5ce3
movzx ecx, ax
add esp, 4
mov dword [esi + 0x66c8], ecx
jmp 0x5d6c50
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 8]
push 1
push edi
push eax
call ecx
add esp, 0xc
mov edx, dword [ebp - 0x17c]
lea edi, [edx + edi + 0x16]
mov dword [ebp - 0x17c], edi
add edi, 0x16
cmp edi, dword [ebp - 0x170]
jb 0x5d6bfa
mov ax, word [ebp - 0x16c]
mov word [esi + 0x6274], ax
cmp ebx, 0xe80
jne 0x5d6d13
cmp dword [ebp - 0x170], 0x100
jne 0x5d6f09
cmp dword [ebp - 0x16c], 7
jne 0x5d6f09
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ecx + 8]
push 1
push 0x30
push edx
call eax
push esi
call fcn.005c5ce3
movzx ecx, ax
imul ecx, ecx, 0x1fc
mov dword [ebp - 0x168], ecx
push esi
fild dword [ebp - 0x168]
fmul qword [0x1010c198]
fmul qword [0x10105730]
fstp dword [esi + 0xe774]
call fcn.005c5ce3
movzx edx, ax
add esp, 0x14
imul edx, edx, 0x17e
mov dword [ebp - 0x168], edx
fild dword [ebp - 0x168]
fmul qword [0x1010c190]
fmul qword [0x10105730]
fstp dword [esi + 0xe77c]
jmp 0x5d6f09
cmp ebx, 0xf00
jne 0x5d6d7b
cmp dword [ebp - 0x16c], 7
jne 0x5d6f09
mov eax, dword [ebp - 0x170]
cmp eax, 0x266
jne 0x5d6d4f
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 8]
push 1
push 0xb0
push ecx
call edx
add esp, 0xc
jmp 0x5d6eb8
cmp eax, 0x2de
je 0x5d6d61
cmp eax, 0x5de
jne 0x5d70b0
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 8]
push 1
push 0x94
push ecx
call edx
add esp, 0xc
jmp 0x5d6eb8
cmp ebx, 0x1011
jne 0x5d6d91
cmp dword [ebp - 0x170], 9
je 0x5d6d99
jmp 0x5d6f09
cmp ebx, 0x20400200
jne 0x5d6df9
lea eax, [esi + 0xe794]
mov dword [ebp - 0x17c], eax
mov dword [ebp - 0x168], 3
lea esp, [esp]
mov edi, dword [ebp - 0x17c]
mov ebx, 3
jmp 0x5d6dc3
push esi
call fcn.005c5ce3
movsx ecx, ax
mov dword [ebp - 0x174], ecx
add esp, 4
add edi, 4
dec ebx
fild dword [ebp - 0x174]
fmul qword [0x10105700]
fstp dword [edi - 4]
jne 0x5d6dc3
add dword [ebp - 0x17c], 0x10
dec dword [ebp - 0x168]
jne 0x5d6db3
mov ebx, dword [ebp - 0x178]
cmp ebx, 0x1012
je 0x5d6e0f
cmp ebx, 0x20400600
jne 0x5d6e3f
mov edi, 4
cmp dword [ebp - 0x170], edi
jne 0x5d6e3f
mov dword [esi + 0x65f8], 0
push esi
call fcn.005c5ce3
movzx edx, ax
add edx, edx
add edx, edx
add dword [esi + 0x65f8], edx
add esp, 4
dec edi
jne 0x5d6e26
cmp ebx, 0x1017
je 0x5d6e4f
cmp ebx, 0x20400100
jne 0x5d6e73
push esi
call fcn.005c5ce3
movzx eax, ax
mov dword [ebp - 0x174], eax
add esp, 4
fild dword [ebp - 0x174]
fmul qword [0x10105700]
fstp dword [esi + 0xe774]
cmp ebx, 0x1018
je 0x5d6e83
cmp ebx, 0x20400100
jne 0x5d6ea7
push esi
call fcn.005c5ce3
movzx ecx, ax
mov dword [ebp - 0x174], ecx
add esp, 4
fild dword [ebp - 0x174]
fmul qword [0x10105700]
fstp dword [esi + 0xe77c]
cmp ebx, 0x2011
jne 0x5d6f09
cmp dword [ebp - 0x170], 2
jne 0x5d6f09
mov edx, 0x4d4d
push esi
mov word [esi + 0x6274], dx
call fcn.005c5ce3
movzx eax, ax
mov dword [ebp - 0x174], eax
push esi
fild dword [ebp - 0x174]
fmul qword [0x10105700]
fstp dword [esi + 0xe774]
call fcn.005c5ce3
movzx ecx, ax
mov dword [ebp - 0x174], ecx
fild dword [ebp - 0x174]
fmul qword [0x10105700]
fstp dword [esi + 0xe77c]
add esp, 8
mov ebx, dword [ebp - 0x178]
mov edx, ebx
or edx, 0x70
cmp edx, 0x2070
jne 0x5d6f52
cmp dword [ebp - 0x16c], 4
jne 0x5d6f52
mov eax, dword [esi]
push 0
push esi
mov dword [ebp - 0x174], eax
call fcn.005c5d83
mov edi, dword [ebp + 0xc]
add eax, edi
add esp, 4
push eax
mov eax, dword [esi + 4]
push eax
mov eax, dword [ebp - 0x174]
mov ecx, dword [eax + 8]
call ecx
add esp, 0xc
jmp 0x5d6f55
mov edi, dword [ebp + 0xc]
cmp ebx, 0x2010
jne 0x5d6f79
cmp dword [ebp - 0x16c], 7
je 0x5d70b0
mov dword [esi + 0x2e7fc], 0x1007ba90
jmp 0x5d70b0
cmp ebx, 0x2020
jne 0x5d6f9a
push 0x102
push 0x101
push edi
push esi
call fcn.005d5cf3
add esp, 0x10
jmp 0x5d70b0
cmp ebx, 0x2040
jne 0x5d6fb2
push ebx
push edi
push esi
call fcn.005d5d83
add esp, 0xc
jmp 0x5d70b0
cmp ebx, 0xb028
jne 0x5d6fea
mov ebx, dword [esi]
push 0
push esi
call fcn.005c5d83
mov edx, dword [esi + 4]
add esp, 4
push eax
mov eax, dword [ebx + 8]
push edx
call eax
push 0x89
push 0x88
push edi
push esi
call fcn.005d5cf3
add esp, 0x1c
jmp 0x5d70b0
cmp ebx, 0x4001
jne 0x5d70b0
cmp dword [ebp - 0x170], 0x1f4
jbe 0x5d70b0
mov eax, dword [ebp - 0x170]
cmp eax, 0x246
jne 0x5d701a
mov eax, 0x32
jmp 0x5d7039
cmp eax, 0x28d
jne 0x5d7028
mov eax, 0x44
jmp 0x5d7039
sub eax, 0x1400
neg eax
sbb eax, eax
and eax, 0xfffffff0
add eax, 0x8e
push 1
push eax
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov eax, dword [ecx + 8]
push edx
call eax
add esp, 0xc
xor edi, edi
lea esp, [esp]
push esi
call fcn.005c5ce3
movzx ecx, ax
mov edx, edi
shr edx, 1
mov dword [ebp - 0x174], ecx
xor edx, edi
inc edi
fild dword [ebp - 0x174]
add esp, 4
fstp dword [esi + edx*4 + 0xe774]
cmp edi, 4
jb 0x5d7053
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 8]
push 1
push 0x16
push ecx
call edx
add esp, 0xc
xor edi, edi
nop
push esi
call fcn.005c5ce3
mov ecx, edi
shr ecx, 1
xor ecx, edi
inc edi
add esp, 4
mov word [esi + ecx*2 + 0xe76c], ax
cmp edi, 4
jb 0x5d7093
mov eax, dword [ebp - 0x194]
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [edx + 8]
push 0
push eax
push ecx
call edx
mov eax, dword [ebp - 0x188]
add esp, 0xc
test eax, eax
jne 0x5d6193
jmp 0x5d71c2
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, 0x4d4d
mov word [esi + 0x6274], ax
mov eax, dword [ecx + 0x18]
push edx
call eax
add esp, 4
cmp eax, dword [esi + 0x65c0]
jge 0x5d71c2
lea ecx, [ecx]
cmp eax, 0x4000
jae 0x5d71c2
mov dword [ebp - 0x164], ebx
mov ebx, edi
mov edi, dword [ebp - 0x158]
push esi
call fcn.005c5ce3
movzx ecx, ax
add esp, 4
mov dword [ebp - 0x158], ecx
cmp edi, 0x100
jne 0x5d71a8
cmp ecx, edi
jne 0x5d71a8
mov eax, dword [ebp - 0x164]
lea edx, [eax - 0x101]
cmp edx, 0x17e
ja 0x5d71a8
lea ecx, [ebx - 0x101]
cmp ecx, 0x17e
ja 0x5d71a8
mov dword [ebp - 0x188], eax
fild dword [ebp - 0x188]
test eax, eax
jns 0x5d7172
fadd dword [0x10104610]
fstp dword [esi + 0xe774]
mov edx, ebx
fld dword [0x1010c18c]
mov dword [ebp - 0x188], edx
fst dword [esi + 0xe778]
fild dword [ebp - 0x188]
test edx, edx
jns 0x5d719c
fadd dword [0x10104610]
fstp dword [esi + 0xe77c]
fstp dword [esi + 0xe780]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [eax + 0x18]
push ecx
call edx
add esp, 4
cmp eax, dword [esi + 0x65c0]
jl 0x5d7103
mov ax, word [ebp - 0x198]
mov word [esi + 0x6274], ax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0057371d
mov esp, ebp
pop ebp
ret