Function at 0x5121e0
Capabilities:
Enumerate pe sections
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffef4
xor eax, eax
push ebx
push esi
push edi
mov ebx, dword [ebp + 8]
mov dword [ebp - 8], eax
mov edx, dword [ebx]
mov dword [ebp - 0xc], edx
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 8]
mov edx, dword [eax + 0xc]
xor eax, eax
mov cl, byte [edx + 0x39]
xor edx, edx
mov byte [ebp - 0xd], cl
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
xor eax, eax
mov dword [ebp - 0x20], eax
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], ecx
xor eax, eax
mov dword [ebp - 0x2c], eax
push ebx
call fcn.0050fdfc
cmp dword [ebx + 0x64], 7
pop ecx
jne 0x51223d
jmp 0x517c3c
xor edx, edx
xor ecx, ecx
mov dword [ebx + 0x64], edx
mov dword [ebx + 0x2c], ecx
mov eax, dword [ebp - 0xc]
xor edx, edx
mov dword [eax + 0x194], edx
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0xd0], 0
jne 0x517caa
mov eax, dword [ebx + 0x60]
mov dword [ebp - 4], eax
cmp dword [ebp - 8], 0
jne 0x517be5
mov edx, dword [ebp - 0xc]
cmp byte [edx + 0x1e], 0
jne 0x517c3c
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
shl esi, 2
lea esi, [esi + esi*4]
add esi, dword [ebx + 0x14]
cmp dword [eax + 0xf8], 0
je 0x5122d1
mov edx, dword [ebp - 0xc]
mov ecx, dword [edx + 0x100]
cmp ecx, dword [ebp - 0x2c]
jne 0x5122ce
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0xfc]
push edx
mov ecx, dword [ebp - 0xc]
call dword [ecx + 0xf8]
pop ecx
test eax, eax
je 0x5122c9
mov dword [ebp - 8], 9
jmp 0x517be5
xor eax, eax
mov dword [ebp - 0x2c], eax
inc dword [ebp - 0x2c]
xor edx, edx
mov dl, byte [esi]
mov al, byte [edx + 0x554398]
mov edx, eax
test dl, 2
je 0x512311
mov ecx, dword [esi + 8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050d904
pop ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1c], 1
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov dword [ecx + 0x18], eax
jmp 0x512392
test dl, 4
je 0x512366
mov ecx, dword [esi + 4]
mov edi, ebx
shl ecx, 3
mov edi, dword [edi + 0x4c]
lea ecx, [ecx + ecx*4]
add ecx, edi
test dl, 8
mov dword [ebp - 0x14], ecx
je 0x512351
mov ecx, dword [esi + 8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, edi
test dl, 0x20
mov dword [ebp - 0x18], ecx
je 0x512392
mov eax, dword [esi + 0xc]
shl eax, 3
lea eax, [eax + eax*4]
add eax, edi
mov dword [ebp - 0x20], eax
jmp 0x512392
test dl, 0x10
je 0x512392
mov edx, dword [esi + 0xc]
shl edx, 3
lea edx, [edx + edx*4]
add edx, edi
mov dword [ebp - 0x1c], edx
jmp 0x512392
mov edx, eax
test dl, 8
je 0x51237e
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x18], eax
jmp 0x512392
test dl, 0x10
je 0x512392
mov ecx, dword [esi + 0xc]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x1c], ecx
xor eax, eax
mov al, byte [esi]
cmp eax, 0x91
ja case.0x5123a1.0
jmp dword [eax*4 + 0x5123a8]
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0xd0], 0
jne 0x517caa
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [esi + 4]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x14]
mov word [edx + 0x1c], 4
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
mov word [edx + 0x1c], 4
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx]
mov dword [ebp - 0xec], eax
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0xec]
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x1c]
test byte [edx + 0x1c], 1
je case.0x5123a1.0
mov ecx, dword [esi + 4]
mov edx, esi
mov dword [ebx + 0x64], ecx
mov eax, dword [ebp - 4]
mov dword [ebx + 0x60], eax
mov cl, byte [edx + 8]
mov byte [ebx + 0x38], cl
cmp dword [esi + 0x10], 0
je 0x5126b7
mov eax, dword [esi + 0x10]
push eax
push 0x5580fd
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebx + 0x68]
push ecx
call fcn.004fc778
add esp, 0x10
push ebx
call fcn.0050fe10
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 5
jne 0x5126d7
mov eax, 5
mov dword [ebp - 8], eax
mov dword [ebx + 0x64], eax
jmp 0x517c09
cmp dword [ebx + 0x64], 0
je 0x5126e4
mov edx, 1
jmp 0x5126e9
mov edx, 0x65
mov dword [ebp - 8], edx
jmp 0x517c09
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1c], 4
mov eax, esi
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + 4]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1c], 4
mov edx, dword [ebp - 0x20]
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1c], 8
mov ecx, dword [ebp - 0x20]
mov eax, dword [esi + 0x10]
mov edx, dword [eax]
mov dword [ecx + 8], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0xc], edx
jmp case.0x5123a1.0
mov byte [esi], 0x1c
mov ecx, dword [esi + 0x10]
push ecx
call fcn.004fe1ec
pop ecx
mov dword [esi + 4], eax
xor eax, eax
mov al, byte [ebp - 0xd]
dec eax
je 0x5127e9
push 0
push 1
push 0xffffffffffffffff
mov edx, dword [esi + 0x10]
push edx
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050de78
add esp, 0x14
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0x12
je 0x517c1e
xor eax, eax
mov al, byte [ebp - 0xd]
push eax
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050d5dc
add esp, 8
test eax, eax
jne 0x517c3c
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov dword [ecx + 0x24], eax
mov edx, dword [ebp - 0x20]
or word [edx + 0x1c], 0x800
mov ecx, dword [ebp - 0x20]
and word [ecx + 0x1c], 0xfbff
cmp byte [esi + 1], 0xff
jne 0x5127d3
mov eax, dword [esi + 0x10]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc3d4
add esp, 8
mov byte [esi + 1], 0xff
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x14]
mov dword [esi + 0x10], eax
mov edx, dword [ebp - 0x20]
mov ecx, dword [edx + 0x18]
mov dword [esi + 4], ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x48]
cmp edx, dword [esi + 4]
jge case.0x5123a1.28
jmp 0x517c1e
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1c], 0xa02
mov eax, dword [ebp - 0x20]
mov edx, dword [esi + 0x10]
mov dword [eax + 0x14], edx
mov ecx, dword [ebp - 0x20]
mov eax, dword [esi + 4]
mov dword [ecx + 0x18], eax
mov edx, dword [ebp - 0x20]
mov cl, byte [ebp - 0xd]
mov byte [edx + 0x1f], cl
jmp case.0x5123a1.0
push 0
push 0
mov eax, dword [esi + 4]
push eax
mov edx, dword [esi + 0x10]
push edx
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050de78
add esp, 0x14
mov eax, dword [ebp - 0x20]
mov dl, byte [ebp - 0xd]
mov byte [eax + 0x1f], dl
jmp case.0x5123a1.0
mov ecx, dword [esi + 4]
dec ecx
mov dword [ebp - 0xec], ecx
mov eax, dword [esi + 8]
mov dword [ebp - 0xe8], eax
mov edx, dword [esi + 0xc]
mov dword [ebp - 0xe4], edx
jmp 0x5128dd
mov ecx, dword [ebp - 0xec]
inc dword [ebp - 0xec]
mov eax, ecx
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x3c]
mov dword [ebp - 0xe0], eax
push eax
call fcn.0050dd80
pop ecx
test eax, eax
je 0x512898
jmp 0x517c1e
mov edx, dword [ebp - 0xe8]
inc dword [ebp - 0xe8]
mov ecx, edx
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050d904
pop ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1c], 1
push 0x800
mov ecx, dword [ebp - 0xe0]
push ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050ddb4
add esp, 0xc
mov edx, dword [ebp - 0xe4]
add dword [ebp - 0xe4], 0xffffffff
test edx, edx
jg 0x51286b
jmp case.0x5123a1.0
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0xe8], ecx
mov eax, dword [esi + 4]
mov dword [ebp - 0xe4], eax
mov edx, dword [esi + 8]
mov dword [ebp - 0xe0], edx
mov ecx, dword [ebp - 0xe4]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0xe0]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
jmp 0x512970
mov edx, dword [ebp - 0x20]
mov ecx, dword [edx + 0x24]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x24], edx
mov ecx, dword [ebp - 0x14]
push ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050de44
add esp, 8
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xec]
mov dword [edx + 0x24], ecx
add dword [ebp - 0x14], 0x28
add dword [ebp - 0x20], 0x28
mov eax, dword [ebp - 0xe8]
add dword [ebp - 0xe8], 0xffffffff
test eax, eax
jne 0x512938
jmp case.0x5123a1.0
mov edx, dword [esi + 8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], edx
push 0x1000
mov ecx, dword [ebp - 0x14]
push ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050ddb4
add esp, 0xc
mov edx, dword [ebp - 0x20]
test byte [edx + 0x1d], 0x10
je case.0x5123a1.0
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050d6e8
pop ecx
test eax, eax
je case.0x5123a1.0
jmp 0x517c3c
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
push 0x1000
mov edx, dword [ebp - 0x14]
push edx
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050ddb4
add esp, 0xc
jmp case.0x5123a1.0
push 1
push ebx
call fcn.0050fd64
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x512a15
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x50]
add eax, 2
or eax, 1
mov dword [ebx + 0x50], eax
mov edx, dword [esi + 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
xor eax, eax
mov dword [ebx + 0x2c], edx
mov dword [ebp - 0xec], edx
mov dword [ebp - 0xe8], eax
jmp 0x512a74
mov ecx, eax
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebp - 0xec]
push ecx
call fcn.0050d7a8
pop ecx
mov eax, dword [ebp - 0xe8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebp - 0xec]
push eax
call fcn.00511fa4
pop ecx
inc dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe8]
cmp eax, dword [esi + 8]
jl 0x512a40
mov edx, dword [ebp - 0xc]
cmp byte [edx + 0x1e], 0
jne 0x517c3c
mov ecx, dword [ebp - 4]
inc ecx
mov dword [ebx + 0x60], ecx
mov dword [ebp - 8], 0x64
jmp 0x517c09
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov dx, word [eax + 0x1c]
or dx, word [ecx + 0x1c]
test dl, 1
je 0x512ac1
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1d], 0x40
je 0x512ad6
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050d74c
pop ecx
jmp 0x512ad8
xor eax, eax
test eax, eax
jne 0x517c3c
mov edx, dword [ebp - 0x18]
test byte [edx + 0x1d], 0x40
je 0x512af5
mov ecx, dword [ebp - 0x18]
push ecx
call fcn.0050d74c
pop ecx
jmp 0x512af7
xor eax, eax
test eax, eax
jne 0x517c3c
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 0x12
jne 0x512b23
xor ecx, ecx
mov cl, byte [ebp - 0xd]
push ecx
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050d804
add esp, 8
test eax, eax
je 0x512b23
jmp 0x517c3c
mov edx, dword [ebp - 0x18]
test byte [edx + 0x1c], 0x12
jne 0x512b47
xor ecx, ecx
mov cl, byte [ebp - 0xd]
push ecx
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050d804
add esp, 8
test eax, eax
je 0x512b47
jmp 0x517c3c
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov eax, dword [eax + 0x18]
add eax, dword [edx + 0x18]
cdq
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x48]
cdq
cmp edx, dword [ebp - 0xe8]
jne 0x512b7c
cmp eax, dword [ebp - 0xec]
jae 0x512b83
jmp 0x517c1e
jge 0x512b83
jmp 0x517c1e
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 2
mov word [edx + 0x1c], ax
mov ecx, dword [ebp - 0x20]
cmp ecx, dword [ebp - 0x18]
sete al
and eax, 1
push eax
mov eax, dword [ebp - 0xec]
add eax, 2
push eax
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050d604
add esp, 0xc
test eax, eax
je 0x512bc5
jmp 0x517c3c
mov ecx, dword [ebp - 0x20]
cmp ecx, dword [ebp - 0x18]
je 0x512bea
mov eax, dword [ebp - 0x18]
mov edx, dword [eax + 0x18]
push edx
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx + 0x14]
push eax
mov edx, dword [ebp - 0x20]
mov ecx, dword [edx + 0x14]
push ecx
call fcn.004e8ee0
add esp, 0xc
mov eax, dword [ebp - 0x14]
mov edx, dword [eax + 0x18]
push edx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx + 0x14]
push eax
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov ecx, dword [edx + 0x14]
add ecx, dword [eax + 0x18]
push ecx
call fcn.004e8ee0
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xec]
add esp, 0xc
mov ecx, dword [edx + 0x14]
mov byte [ecx + eax], 0
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xec]
mov ecx, dword [edx + 0x14]
mov byte [ecx + eax + 1], 0
mov eax, dword [ebp - 0x20]
or word [eax + 0x1c], 0x200
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xec]
mov dword [edx + 0x18], eax
mov ecx, dword [ebp - 0x20]
mov al, byte [ebp - 0xd]
mov byte [ecx + 0x1f], al
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
push edx
call fcn.005120d0
pop ecx
mov ecx, dword [ebp - 0x18]
push ecx
call fcn.005120d0
mov eax, dword [ebp - 0x14]
pop ecx
mov ecx, dword [ebp - 0x18]
mov dx, word [eax + 0x1c]
or dx, word [ecx + 0x1c]
movzx eax, dx
mov dword [ebp - 0xec], eax
test byte [ebp - 0xec], 1
jne 0x51300f
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
mov cx, word [edx + 0x1c]
and cx, word [eax + 0x1c]
movzx edx, cx
and edx, 4
cmp edx, 4
jne 0x512e60
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx]
mov dword [ebp - 0xe4], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0xe0], eax
mov eax, esi
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx]
mov dword [ebp - 0xdc], ecx
mov ecx, dword [edx + 4]
mov dword [ebp - 0xd8], ecx
mov dl, byte [eax]
sub dl, 0x54
je 0x512ce8
dec dl
je 0x512d05
dec dl
je 0x512d22
dec dl
je 0x512d50
jmp 0x512dcc
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xe0]
add dword [ebp - 0xdc], eax
adc dword [ebp - 0xd8], edx
jmp 0x512e31
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xe0]
sub dword [ebp - 0xdc], eax
sbb dword [ebp - 0xd8], edx
jmp 0x512e31
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0xd8]
call fcn.004f07cc
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], edx
jmp 0x512e31
cmp dword [ebp - 0xe0], 0
jne 0x512d66
cmp dword [ebp - 0xe4], 0
je 0x51300f
cmp dword [ebp - 0xe0], 0xffffffff
jne 0x512da1
cmp dword [ebp - 0xe4], 0xffffffff
jne 0x512da1
cmp dword [ebp - 0xd8], 0x80000000
jne 0x512da1
cmp dword [ebp - 0xdc], 0
jne 0x512da1
mov dword [ebp - 0xe4], 1
mov dword [ebp - 0xe0], 0
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0xd8]
call fcn.004f07ef
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], edx
jmp 0x512e31
cmp dword [ebp - 0xe0], 0
jne 0x512de2
cmp dword [ebp - 0xe4], 0
je 0x51300f
cmp dword [ebp - 0xe0], 0xffffffff
jne 0x512e08
cmp dword [ebp - 0xe4], 0xffffffff
jne 0x512e08
mov dword [ebp - 0xe4], 1
mov dword [ebp - 0xe0], 0
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0xd8]
call fcn.004f08b0
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], edx
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0xdc]
mov dword [eax], edx
mov edx, dword [ebp - 0xd8]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 4
mov word [edx + 0x1c], ax
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050da8c
pop ecx
fstp qword [ebp - 0xd4]
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050da8c
pop ecx
mov edx, esi
fstp qword [ebp - 0xcc]
mov cl, byte [edx]
sub cl, 0x54
je 0x512e97
dec cl
je 0x512eae
dec cl
je 0x512ec5
dec cl
je 0x512edc
jmp 0x512f0e
fld qword [ebp - 0xd4]
fadd qword [ebp - 0xcc]
fstp qword [ebp - 0xcc]
jmp 0x512fad
fld qword [ebp - 0xd4]
fsubr qword [ebp - 0xcc]
fstp qword [ebp - 0xcc]
jmp 0x512fad
fld qword [ebp - 0xd4]
fmul qword [ebp - 0xcc]
fstp qword [ebp - 0xcc]
jmp 0x512fad
fld qword [ebp - 0xd4]
fld dword [0x517ce4]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x51300f
fld qword [ebp - 0xd4]
fdivr qword [ebp - 0xcc]
fstp qword [ebp - 0xcc]
jmp 0x512fad
fld qword [ebp - 0xd4]
call fcn.004f0cbc
mov dword [ebp - 0xe4], eax
mov dword [ebp - 0xe0], edx
fld qword [ebp - 0xcc]
call fcn.004f0cbc
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], edx
cmp dword [ebp - 0xe0], 0
jne 0x512f52
cmp dword [ebp - 0xe4], 0
je 0x51300f
cmp dword [ebp - 0xe0], 0xffffffff
jne 0x512f78
cmp dword [ebp - 0xe4], 0xffffffff
jne 0x512f78
mov dword [ebp - 0xe4], 1
mov dword [ebp - 0xe0], 0
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0xd8]
call fcn.004f08b0
mov dword [ebp - 0xf4], eax
mov dword [ebp - 0xf0], edx
fild qword [ebp - 0xf4]
fstp qword [ebp - 0xcc]
push dword [ebp - 0xc8]
push dword [ebp - 0xcc]
call fcn.004fe1b4
add esp, 8
test eax, eax
je 0x512fc7
jmp 0x51300f
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xcc]
mov dword [edx + 8], ecx
mov ecx, dword [ebp - 0xc8]
mov dword [edx + 0xc], ecx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 8
mov word [ecx + 0x1c], dx
test byte [ebp - 0xec], 8
jne case.0x5123a1.0
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050db1c
pop ecx
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
xor ecx, ecx
mov cl, byte [esi + 3]
mov dword [ebp - 0xa0], ecx
mov eax, dword [ebx + 0x24]
mov dword [ebp - 0xa4], eax
mov edx, dword [esi + 8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xe8], edx
xor ecx, ecx
mov dword [ebp - 0xec], ecx
jmp 0x51307c
mov edx, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xe8]
mov dword [edx + eax*4], ecx
mov eax, dword [ebp - 0xe8]
push eax
call fcn.00511fa4
pop ecx
inc dword [ebp - 0xec]
add dword [ebp - 0xe8], 0x28
mov eax, dword [ebp - 0xec]
cmp eax, dword [ebp - 0xa0]
jl 0x513053
cmp byte [esi + 1], 0xfb
jne 0x5130a3
mov edx, dword [esi + 0x10]
xor ecx, ecx
mov dword [ebp - 0xe4], edx
mov dword [ebp - 0xe0], ecx
jmp 0x5130ba
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xe0], eax
mov edx, dword [ebp - 0xe0]
mov ecx, dword [edx]
mov dword [ebp - 0xe4], ecx
mov eax, dword [esi + 0xc]
xor ecx, ecx
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
xor eax, eax
mov word [ebp - 0xc0], 1
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0xcc], edx
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0xb8], eax
lea ecx, [ebp - 0xdc]
mov edx, dword [ebp - 0x20]
push edx
push ecx
call fcn.0050de44
mov ax, word [ebp - 0xc0]
xor edx, edx
and ax, 0xbf00
add esp, 8
or ax, 1
mov word [ebp - 0xc0], ax
mov dword [ebp - 0xb0], edx
mov ecx, dword [ebp - 0xe4]
test byte [ecx + 3], 8
je 0x513131
mov eax, dword [esi - 4]
mov dword [ebp - 0xac], eax
mov edx, dword [ebp - 0xa4]
lea eax, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xa0]
push ecx
push eax
mov edx, dword [ebp - 0xe4]
call dword [edx + 0xc]
add esp, 0xc
jmp 0x513166
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1e], 0
je 0x513181
lea edx, [ebp - 0xdc]
push edx
call fcn.0050d960
pop ecx
jmp 0x517c3c
cmp dword [ebp - 0xe0], 0
je 0x5131aa
mov ecx, dword [esi + 4]
push ecx
mov eax, dword [ebp - 0xe0]
push eax
call fcn.005101c8
add esp, 8
mov edx, dword [ebp - 0xe0]
mov dword [esi + 0x10], edx
mov byte [esi + 1], 0xf9
cmp dword [ebp - 0xb0], 0
je 0x5131df
lea ecx, [ebp - 0xdc]
push ecx
call fcn.00510f8c
pop ecx
push eax
push 0x558100
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebx + 0x68]
push edx
call fcn.004fc778
add esp, 0x10
mov ecx, dword [ebp - 0xb0]
mov dword [ebp - 8], ecx
xor eax, eax
mov al, byte [ebp - 0xd]
push eax
lea edx, [ebp - 0xdc]
push edx
call fcn.0050d5dc
add esp, 8
lea ecx, [ebp - 0xdc]
push ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050de44
add esp, 8
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050dd80
pop ecx
test eax, eax
je case.0x5123a1.0
jmp 0x517c1e
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov ax, word [ecx + 0x1c]
or ax, word [edx + 0x1c]
test al, 1
je 0x513244
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050da08
pop ecx
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
mov edx, dword [ebp - 0x14]
push edx
call fcn.0050da08
pop ecx
mov dword [ebp - 0xe4], eax
mov dword [ebp - 0xe0], edx
mov ecx, esi
mov al, byte [ecx]
sub al, 0x50
je 0x513282
dec al
je 0x51329c
dec al
je 0x5132b6
jmp 0x5132dd
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xe0]
and dword [ebp - 0xec], eax
and dword [ebp - 0xe8], edx
jmp 0x513302
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xe0]
or dword [ebp - 0xec], eax
or dword [ebp - 0xe8], edx
jmp 0x513302
mov eax, dword [ebp - 0xe4]
mov ecx, eax
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xe8]
call fcn.004f0978
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
jmp 0x513302
mov eax, dword [ebp - 0xe4]
mov ecx, eax
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xe8]
call fcn.004f0994
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0xec]
mov dword [eax], edx
mov edx, dword [ebp - 0xe8]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 4
mov word [edx + 0x1c], ax
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050db90
mov eax, esi
pop ecx
mov ecx, dword [ebp - 0x14]
mov eax, dword [eax + 8]
cdq
add dword [ecx], eax
adc dword [ecx + 4], edx
jmp case.0x5123a1.0
mov al, byte [ebp - 0xd]
push eax
push 0x63
mov edx, dword [ebp - 0x14]
push edx
call fcn.00512154
add esp, 0xc
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 4
jne 0x51338c
cmp dword [esi + 8], 0
jne 0x513380
mov dword [ebp - 8], 0x14
jmp 0x517c68
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov cx, word [edx + 0x1c]
and cx, 0xbf00
or cx, 4
mov word [eax + 0x1c], cx
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 4
je case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050dbb8
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
test byte [eax + 0x1c], 1
jne case.0x5123a1.0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
movzx ecx, word [edx + 0x1c]
and ecx, 0x10
sar ecx, 3
or word [eax + 0x1c], cx
mov dl, byte [ebp - 0xd]
push edx
push 0x61
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00512154
add esp, 0xc
mov eax, dword [ebp - 0x14]
test byte [eax + 0x1d], 0x40
je 0x51340c
mov edx, dword [ebp - 0x14]
push edx
call fcn.0050d74c
pop ecx
jmp 0x51340e
xor eax, eax
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0x14]
and word [edx + 0x1c], 0xbfe3
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 1
jne case.0x5123a1.0
mov eax, dword [ebp - 0x14]
test byte [eax + 0x1c], 0x10
jne 0x513463
mov dl, byte [ebp - 0xd]
push edx
push 0x61
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00512154
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 0x10
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
and word [eax + 0x1c], 0xff10
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 0xd
jne case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050dbe0
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
test byte [eax + 0x1c], 1
jne case.0x5123a1.0
mov edx, dword [ebp - 0x14]
push edx
call fcn.0050db90
pop ecx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 1
jne case.0x5123a1.0
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050dbb8
pop ecx
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov cx, word [edx + 0x1c]
or cx, word [eax + 0x1c]
movzx edx, cx
mov dword [ebp - 0xec], edx
test byte [ebp - 0xec], 1
je 0x51352c
test byte [esi + 3], 0x10
je 0x513516
mov ecx, dword [esi + 8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 1
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
test byte [esi + 3], 8
je case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, esi
mov cl, byte [edx + 3]
and cl, 0x67
mov byte [ebp - 0xe4], cl
cmp byte [ebp - 0xe4], 0
je 0x51357e
mov al, byte [ebp - 0xd]
push eax
mov dl, byte [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00512154
add esp, 0xc
mov al, byte [ebp - 0xd]
push eax
mov dl, byte [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0x1c]
push ecx
call fcn.00512154
add esp, 0xc
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1e], 0
jne 0x517c3c
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1d], 0x40
je 0x513591
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050d74c
pop ecx
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x1d], 0x40
je 0x5135a4
mov edx, dword [ebp - 0x1c]
push edx
call fcn.0050d74c
pop ecx
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [ebp - 0x14]
push eax
mov edx, dword [ebp - 0x1c]
push edx
call fcn.0050e00c
mov dword [ebp - 0xe8], eax
xor ecx, ecx
mov cl, byte [esi]
add esp, 0xc
add ecx, 0xffffffb7
cmp ecx, 4
ja case.default.0x5135ce
jmp dword [ecx*4 + 0x5135d5]
cmp dword [ebp - 0xe8], 0
sete al
and eax, 1
mov dword [ebp - 0xe8], eax
jmp 0x513665
cmp dword [ebp - 0xe8], 0
setne dl
and edx, 1
mov dword [ebp - 0xe8], edx
jmp 0x513665
cmp dword [ebp - 0xe8], 0
setl cl
and ecx, 1
mov dword [ebp - 0xe8], ecx
jmp 0x513665
cmp dword [ebp - 0xe8], 0
setle al
and eax, 1
mov dword [ebp - 0xe8], eax
jmp 0x513665
cmp dword [ebp - 0xe8], 0
setg dl
and edx, 1
mov dword [ebp - 0xe8], edx
jmp 0x513665
cmp dword [ebp - 0xe8], 0
setge cl
and ecx, 1
mov dword [ebp - 0xe8], ecx
test byte [esi + 3], 0x10
je 0x5136a5
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov cx, word [edx + 0x1c]
and cx, 0xbf00
or cx, 4
mov word [eax + 0x1c], cx
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x5123a1.0
cmp dword [ebp - 0xe8], 0
je case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 0x10]
mov dword [ebp - 0x28], edx
jmp case.0x5123a1.0
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0xec], ecx
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xdc], eax
mov edx, dword [esi + 4]
mov dword [ebp - 0xe4], edx
mov ecx, dword [esi + 8]
mov dword [ebp - 0xe0], ecx
xor eax, eax
mov dword [ebp - 0xe8], eax
jmp 0x5137a5
cmp dword [ebp - 0x28], 0
je 0x51370e
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0xe8]
mov eax, dword [edx + ecx*4]
jmp 0x513714
mov eax, dword [ebp - 0xe8]
mov dword [ebp - 0xd8], eax
mov edx, dword [ebp - 0xdc]
mov ecx, dword [ebp - 0xe8]
mov eax, dword [edx + ecx*4 + 0xc]
mov dword [ebp - 0xd4], eax
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xe8]
mov ecx, dword [edx + 8]
xor edx, edx
mov dl, byte [ecx + eax]
mov dword [ebp - 0xd0], edx
mov edx, ebx
mov ecx, dword [ebp - 0xd4]
push ecx
mov eax, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xe0]
add ecx, eax
mov edx, dword [edx + 0x4c]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, edx
push ecx
mov ecx, dword [ebp - 0xe4]
add ecx, eax
mov eax, ecx
shl eax, 3
lea eax, [eax + eax*4]
add eax, edx
push eax
call fcn.0050e00c
add esp, 0xc
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x51379f
cmp dword [ebp - 0xd0], 0
je 0x5137b7
neg dword [ebp - 0x24]
jmp 0x5137b7
inc dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe8]
cmp eax, dword [ebp - 0xec]
jl 0x5136fa
xor edx, edx
mov dword [ebp - 0x28], edx
jmp case.0x5123a1.0
cmp dword [ebp - 0x24], 0
jge 0x5137d3
mov ecx, dword [esi + 4]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
cmp dword [ebp - 0x24], 0
jne 0x5137e5
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 0xc]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 1
je 0x513806
mov dword [ebp - 0xec], 2
jmp 0x513824
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050da08
pop ecx
cmp edx, 0
jne 0x513818
cmp eax, 0
setne dl
and edx, 1
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0x18]
test byte [ecx + 0x1c], 1
je 0x513839
mov dword [ebp - 0xe8], 2
jmp 0x513857
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050da08
pop ecx
cmp edx, 0
jne 0x51384b
cmp eax, 0
setne dl
and edx, 1
mov dword [ebp - 0xe8], edx
xor ecx, ecx
mov cl, byte [esi]
cmp ecx, 0x43
jne 0x513882
mov eax, dword [ebp - 0xec]
lea eax, [eax + eax*2]
lea edx, [eax + 0x55442a]
mov ecx, dword [ebp - 0xe8]
xor eax, eax
mov al, byte [edx + ecx]
mov dword [ebp - 0xec], eax
jmp 0x5138a2
mov edx, dword [ebp - 0xec]
lea edx, [edx + edx*2]
lea ecx, [edx + 0x554433]
mov eax, dword [ebp - 0xe8]
xor edx, edx
mov dl, byte [ecx + eax]
mov dword [ebp - 0xec], edx
cmp dword [ebp - 0xec], 2
jne 0x5138c6
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 1
mov word [edx + 0x1c], ax
jmp case.0x5123a1.0
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 4
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 1
je 0x513918
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050da08
pop ecx
cmp edx, 0
jne 0x51392a
cmp eax, 0
setne al
and eax, 1
cmp eax, 1
sbb eax, eax
neg eax
cdq
push edx
push eax
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050dcbc
add esp, 0xc
jmp case.0x5123a1.0
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 1
je 0x513972
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050da08
pop ecx
not eax
not edx
push edx
push eax
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050dcbc
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 1
je 0x5139a7
mov eax, dword [esi + 0xc]
mov dword [ebp - 0xec], eax
jmp 0x5139e8
mov edx, dword [ebp - 0x14]
push edx
call fcn.0050da8c
pop ecx
fld dword [0x517ce4]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x44
setp dl
and edx, 1
mov dword [ebp - 0xec], edx
xor ecx, ecx
mov cl, byte [esi]
cmp ecx, 0x44
jne 0x5139e8
mov eax, dword [ebp - 0xec]
cmp eax, 1
sbb edx, edx
neg edx
mov dword [ebp - 0xec], edx
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
test byte [eax + 0x1c], 1
je case.0x5123a1.0
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 1
jne case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 4]
xor eax, eax
mov dword [ebp - 0xdc], edx
lea edx, [ebp - 0xac]
mov ecx, dword [esi + 8]
mov dword [ebp - 0xd8], ecx
mov dword [ebp - 0xd4], eax
push 0x28
push 0
push edx
call fcn.004e90c7
mov ecx, dword [esi + 0xc]
add esp, 0xc
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xb0], ecx
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0xb0]
mov dx, word [eax + 0x1c]
xor eax, eax
and dx, 0xbf00
or dx, 1
mov word [ecx + 0x1c], dx
mov dword [ebp - 0xd0], eax
mov edx, dword [ebx + 0x34]
mov ecx, dword [ebp - 0xdc]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xd4], eax
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx]
mov dword [ebp - 0xcc], ecx
cmp dword [ebp - 0xcc], 0
je 0x513b70
mov eax, dword [ebp - 0xd4]
push eax
call fcn.00510304
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov edx, dword [ebp - 0xd4]
cmp byte [edx + 0x14], 0
je 0x513af7
xor ecx, ecx
mov dword [ebp - 0xec], ecx
jmp 0x513baf
mov eax, dword [ebp - 0xd4]
mov edx, dword [eax + 0x5c]
cmp edx, dword [ebx + 0x50]
jne 0x513b28
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx + 0x60]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx + 0x6c]
mov dword [ebp - 0xd0], ecx
jmp 0x513baf
mov eax, dword [ebp - 0xd4]
cmp byte [eax + 0x19], 0
je 0x513b58
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xcc]
push ecx
call fcn.00507f6c
add esp, 8
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0xec], eax
jmp 0x513baf
lea edx, [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xcc]
push ecx
call fcn.00507fe8
add esp, 8
jmp 0x513baf
mov eax, dword [ebp - 0xd4]
cmp byte [eax + 0x15], 0
je 0x513ba7
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx + 0x2c]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xd4]
mov edx, dword [eax + 0x30]
mov dword [ebp - 0xd0], edx
mov ecx, dword [ebp - 0xd4]
xor eax, eax
mov dword [ecx + 0x5c], eax
jmp 0x513baf
xor edx, edx
mov dword [ebp - 0xec], edx
cmp dword [ebp - 0xec], 0
jne 0x513bbd
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0x48]
cmp eax, dword [ebp - 0xec]
jae 0x513bd0
jmp 0x517c1e
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx + 0x44]
mov dword [ebp - 0xc0], ecx
mov eax, dword [ebp - 0xd4]
mov edx, dword [eax + 0x64]
mov dword [ebp - 0xc8], edx
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx + 0x5c]
cmp eax, dword [ebx + 0x50]
jne 0x513c10
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx + 0x68]
mov dword [ebp - 0xc4], ecx
jmp 0x513f02
xor eax, eax
mov dword [ebp - 0x68], eax
mov edx, dword [ebp - 0xc0]
shl edx, 2
add edx, dword [ebp - 0xc8]
mov dword [ebp - 0xc4], edx
mov eax, dword [ebp - 0xd4]
mov dword [eax + 0x68], edx
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xec]
mov dword [ecx + 0x60], eax
mov edx, dword [ebp - 0xd4]
mov ecx, dword [ebx + 0x50]
mov dword [edx + 0x5c], ecx
cmp dword [ebp - 0xd0], 0
je 0x513c65
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xb4], eax
jmp 0x513cd8
mov edx, dword [ebp - 0xd4]
cmp byte [edx + 0x19], 0
je 0x513c8c
lea ecx, [ebp - 0x68]
push ecx
mov eax, dword [ebp - 0xcc]
push eax
call fcn.00508558
add esp, 8
mov dword [ebp - 0xb4], eax
jmp 0x513ca5
lea edx, [ebp - 0x68]
push edx
mov ecx, dword [ebp - 0xcc]
push ecx
call fcn.0050857c
add esp, 8
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0xec]
cmp eax, dword [ebp - 0x68]
ja 0x513ccd
mov edx, dword [ebp - 0xb4]
mov dword [ebp - 0xd0], edx
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xb4]
mov dword [ecx + 0x6c], eax
jmp 0x513cd8
mov edx, dword [ebp - 0xd4]
xor ecx, ecx
mov dword [edx + 0x6c], ecx
mov eax, dword [ebp - 0xb4]
cmp byte [eax], 0x80
jae 0x513cf4
mov edx, dword [ebp - 0xb4]
xor ecx, ecx
mov al, 1
mov cl, byte [edx]
mov dword [ebp - 0x7c], ecx
jmp 0x513d07
lea edx, [ebp - 0x7c]
push edx
mov ecx, dword [ebp - 0xb4]
push ecx
call fcn.004fec78
add esp, 8
and eax, 0xff
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x7c], 0x18003
jbe 0x513d24
mov dword [ebp - 8], 0xb
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc0]
lea edx, [edx + edx*4]
add edx, 3
mov dword [ebp - 0xbc], edx
mov ecx, dword [ebp - 0x7c]
cmp ecx, dword [ebp - 0xbc]
jge 0x513d4a
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xbc], eax
cmp dword [ebp - 0xd0], 0
jne 0x513db4
mov edx, dword [ebp - 0x68]
cmp edx, dword [ebp - 0xbc]
jge 0x513db4
mov word [ebp - 0x90], 0
xor ecx, ecx
lea eax, [ebp - 0xac]
mov dword [ebp - 0x9c], ecx
push eax
mov edx, dword [ebp - 0xd4]
xor ecx, ecx
mov cl, byte [edx + 0x19]
push ecx
mov eax, dword [ebp - 0xbc]
push eax
push 0
mov edx, dword [ebp - 0xcc]
push edx
call fcn.0050e280
add esp, 0x14
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x513da8
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x98]
mov dword [ebp - 0xb4], ecx
mov eax, dword [ebp - 0xb4]
add eax, dword [ebp - 0xbc]
mov dword [ebp - 0x80], eax
mov edx, dword [ebp - 0xb4]
add edx, dword [ebp - 0x6c]
mov dword [ebp - 0x84], edx
xor edx, edx
mov eax, dword [ebp - 0x7c]
xor ecx, ecx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], edx
mov dword [ebp - 0xb8], ecx
jmp 0x513e94
mov eax, dword [ebp - 0x84]
cmp eax, dword [ebp - 0x80]
jae 0x513e7d
mov edx, dword [ebp - 0xc4]
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebp - 0x74]
mov dword [edx + ecx*4], eax
mov eax, dword [ebp - 0x84]
cmp byte [eax], 0x80
jae 0x513e32
mov eax, dword [ebp - 0x84]
mov edx, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0xb8]
movzx eax, byte [eax]
mov dword [edx + ecx*4], eax
mov dl, 1
jmp 0x513e53
mov ecx, dword [ebp - 0xb8]
shl ecx, 2
add ecx, dword [ebp - 0xc8]
push ecx
mov eax, dword [ebp - 0x84]
push eax
call fcn.004fec78
add esp, 8
mov edx, eax
xor ecx, ecx
mov cl, dl
add dword [ebp - 0x84], ecx
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xb8]
mov ecx, dword [eax + edx*4]
push ecx
call fcn.005104c4
pop ecx
xor edx, edx
add dword [ebp - 0x74], eax
adc dword [ebp - 0x70], edx
jmp 0x513e8e
mov eax, dword [ebp - 0xc4]
mov edx, dword [ebp - 0xb8]
xor ecx, ecx
mov dword [eax + edx*4], ecx
inc dword [ebp - 0xb8]
mov eax, dword [ebp - 0xb8]
cmp eax, dword [ebp - 0xc0]
jl 0x513dea
lea edx, [ebp - 0xac]
push edx
call fcn.0050d960
pop ecx
mov word [ebp - 0x90], 1
mov ecx, dword [ebp - 0x84]
cmp ecx, dword [ebp - 0x80]
ja 0x513ef6
mov eax, dword [ebp - 0xec]
xor edx, edx
cmp edx, dword [ebp - 0x70]
jne 0x513ed7
cmp eax, dword [ebp - 0x74]
jb 0x513ef6
mov ecx, dword [ebp - 0x84]
cmp ecx, dword [ebp - 0x80]
jne 0x513f02
mov eax, dword [ebp - 0xec]
xor edx, edx
cmp edx, dword [ebp - 0x70]
jne 0x513ef4
cmp eax, dword [ebp - 0x74]
je 0x513f02
mov dword [ebp - 8], 0xb
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0xd8]
cmp dword [ecx + eax*4], 0
je 0x514021
cmp dword [ebp - 0xd0], 0
je 0x513f68
mov edx, dword [ebp - 0xb0]
push edx
call fcn.0050d904
pop ecx
mov ecx, dword [ebp - 0xb0]
push ecx
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [eax + edx*4]
push ecx
mov eax, dword [ebp - 0xc4]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [eax + edx*4]
add ecx, dword [ebp - 0xd0]
push ecx
call fcn.005105b4
add esp, 0xc
jmp 0x514013
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [eax + edx*4]
push ecx
call fcn.005104c4
pop ecx
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xb0]
push eax
lea edx, [ebp - 0xac]
push edx
call fcn.0050de44
add esp, 8
lea ecx, [ebp - 0xac]
push ecx
mov eax, dword [ebp - 0xd4]
xor edx, edx
mov dl, byte [eax + 0x19]
push edx
mov ecx, dword [ebp - 0xbc]
push ecx
mov eax, dword [ebp - 0xc4]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [eax + edx*4]
push ecx
mov eax, dword [ebp - 0xcc]
push eax
call fcn.0050e280
add esp, 0x14
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x513fe1
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x98]
mov dword [ebp - 0xb4], edx
mov ecx, dword [ebp - 0xb0]
push ecx
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [eax + edx*4]
push ecx
mov eax, dword [ebp - 0xb4]
push eax
call fcn.005105b4
add esp, 0xc
mov edx, dword [ebp - 0xb0]
mov cl, byte [ebp - 0xd]
mov byte [edx + 0x1f], cl
jmp 0x51403f
cmp byte [esi + 1], 0xf8
jne 0x51403f
push 0x800
mov eax, dword [esi + 0x10]
push eax
mov edx, dword [ebp - 0xb0]
push edx
call fcn.0050ddb4
add esp, 0xc
cmp dword [ebp - 0x88], 0
je 0x51407e
mov ecx, dword [ebp - 0xb0]
and word [ecx + 0x1c], 0xe7ff
mov eax, dword [ebp - 0xb0]
or word [eax + 0x1c], 0x200
mov edx, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0x98]
mov dword [edx + 0x14], ecx
mov eax, dword [ebp - 0xb0]
mov edx, dword [ebp - 0x88]
mov dword [eax + 0x24], edx
mov ecx, dword [ebp - 0xb0]
push ecx
call fcn.0050d6e8
pop ecx
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xec], eax
mov edx, dword [esi + 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xe8], edx
mov ecx, dword [esi + 8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebp - 0xe8]
add ecx, 0xffffffd8
mov dword [ebp - 0xe4], ecx
mov eax, dword [ebp - 0xe8]
mov dword [ebp - 0xe0], eax
jmp 0x514115
test byte [eax + 0x1d], 0x40
je 0x5140e1
push eax
call fcn.0050d74c
pop ecx
mov dl, byte [ebp - 0xd]
push edx
mov ecx, dword [ebp - 0xe0]
mov eax, ecx
sub eax, dword [ebp - 0xe8]
mov esi, 0x28
cdq
idiv esi
mov edx, dword [ebp - 0xec]
mov al, byte [edx + eax]
push eax
push ecx
call fcn.00512154
add esp, 0xc
add dword [ebp - 0xe0], 0x28
mov eax, dword [ebp - 0xe0]
cmp eax, dword [ebp - 0xe4]
jbe 0x5140d4
jmp case.0x5123a1.0
mov dword [ebp - 0xe4], 0
mov dword [ebp - 0xe0], 0
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0xdc], edx
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xcc], ecx
mov eax, dword [esi + 4]
mov dword [ebp - 0xb8], eax
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xb4], edx
mov ecx, dword [ebp - 0xb8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xc0], ecx
mov eax, dword [esi + 8]
mov dword [ebp - 0xb8], eax
mov edx, dword [ebp - 0xb8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebp - 0xc0]
add edx, 0xffffffd8
xor ecx, ecx
mov dword [ebp - 0xbc], edx
mov cl, byte [ebx + 0x6f]
mov dword [ebp - 0xb0], ecx
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0xe8], eax
jmp 0x5142a4
cmp dword [ebp - 0xb4], 0
je 0x514201
mov dl, byte [ebp - 0xd]
push edx
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0xc0]
mov ecx, 0x28
cdq
idiv ecx
mov edx, dword [ebp - 0xb4]
mov al, byte [edx + eax]
push eax
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00512154
add esp, 0xc
mov eax, dword [ebp - 0xe8]
test byte [eax + 0x1d], 0x40
je 0x51421a
cmp dword [eax + 0x18], 0
jle 0x51421a
push eax
call fcn.0050d74c
pop ecx
mov edx, dword [ebp - 0xb0]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.005103a0
add esp, 8
mov edi, eax
mov dword [ebp - 0xc4], edi
push edi
call fcn.005104c4
pop ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0xa8]
add dword [ebp - 0xe4], eax
cdq
adc dword [ebp - 0xe0], edx
xor edx, edx
mov eax, dword [ebp - 0xc4]
push edx
push eax
call fcn.004fed00
add esp, 8
add dword [ebp - 0xdc], eax
mov ecx, dword [ebp - 0xe8]
test byte [ecx + 0x1d], 0x40
je 0x51428c
mov eax, dword [ebp - 0xe8]
mov edx, dword [eax]
add dword [ebp - 0xcc], edx
jmp 0x51429d
cmp dword [ebp - 0xa8], 0
je 0x51429d
xor ecx, ecx
mov dword [ebp - 0xcc], ecx
add dword [ebp - 0xe8], 0x28
mov eax, dword [ebp - 0xe8]
cmp eax, dword [ebp - 0xbc]
jbe 0x5141c7
mov eax, dword [ebp - 0xdc]
cdq
push edx
push eax
call fcn.004fed00
add esp, 8
mov dword [ebp - 0xc8], eax
add dword [ebp - 0xdc], eax
mov eax, dword [ebp - 0xdc]
cdq
push edx
push eax
call fcn.004fed00
add esp, 8
cmp eax, dword [ebp - 0xc8]
jle 0x5142f2
inc dword [ebp - 0xdc]
mov eax, dword [ebp - 0xdc]
cdq
add eax, dword [ebp - 0xe4]
adc edx, dword [ebp - 0xe0]
push edx
push eax
mov eax, dword [ebp - 0xcc]
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0xd0], edx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x48]
cdq
cmp edx, dword [ebp - 0xd0]
jne 0x51433f
cmp eax, dword [ebp - 0xd4]
jae 0x514346
jmp 0x517c1e
jge 0x514346
jmp 0x517c1e
mov ecx, dword [esi + 0xc]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], ecx
push 0
mov eax, dword [ebp - 0xd4]
push eax
mov edx, dword [ebp - 0x20]
push edx
call fcn.0050d604
add esp, 0xc
test eax, eax
je 0x514373
jmp 0x517c3c
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xdc], 0x80
jae 0x51439d
mov edx, dword [ebp - 0xec]
mov cl, byte [ebp - 0xdc]
mov byte [edx], cl
mov al, 1
jmp 0x5143b3
mov edx, dword [ebp - 0xdc]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.004fea1c
add esp, 8
and eax, 0xff
mov dword [ebp - 0xac], eax
mov edx, dword [ebp - 0xc0]
mov dword [ebp - 0xe8], edx
jmp 0x514435
mov ecx, dword [ebp - 0xb0]
push ecx
push esi
call fcn.005103a0
add esp, 8
mov dword [ebp - 0xc4], eax
cmp dword [ebp - 0xc4], 0x80
jae 0x514407
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xac]
mov cl, byte [ebp - 0xc4]
mov byte [eax + edx], cl
mov al, 1
jmp 0x514423
mov edx, dword [ebp - 0xc4]
push edx
mov ecx, dword [ebp - 0xec]
add ecx, dword [ebp - 0xac]
push ecx
call fcn.004fea1c
add esp, 8
and eax, 0xff
add dword [ebp - 0xac], eax
add dword [ebp - 0xe8], 0x28
mov esi, dword [ebp - 0xe8]
cmp esi, dword [ebp - 0xbc]
jbe 0x5143cc
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0xe8], eax
jmp 0x51448e
mov edx, dword [ebp - 0xb0]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
mov eax, dword [ebp - 0xd4]
mov esi, dword [ebp - 0xac]
sub eax, esi
push eax
mov eax, dword [ebp - 0xec]
add eax, esi
push eax
call fcn.005104e4
add esp, 0x10
add eax, esi
mov dword [ebp - 0xac], eax
add dword [ebp - 0xe8], 0x28
mov edx, dword [ebp - 0xe8]
cmp edx, dword [ebp - 0xbc]
jbe 0x514451
mov eax, dword [ebp - 0xd4]
mov edx, dword [ebp - 0x20]
mov dword [edx + 0x18], eax
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1c], 0x410
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x20], edx
cmp dword [ebp - 0xcc], 0
je 0x5144d6
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xcc]
mov dword [ecx], eax
mov edx, dword [ebp - 0x20]
or word [edx + 0x1c], 0x4000
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x1f], 1
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov eax, dword [ecx]
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0
je 0x514517
lea edx, [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xe4]
push ecx
call fcn.0050bde4
add esp, 8
mov dword [ebp - 8], eax
jmp 0x51452b
mov dword [ebp - 0xec], 0
mov dword [ebp - 0xe8], 0
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1c], 4
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xec]
mov dword [edx], ecx
mov ecx, dword [ebp - 0xe8]
mov dword [edx + 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1c], 0
je 0x514566
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x88], 1
jle case.0x5123a1.0
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 4]
shl ecx, 4
mov edx, dword [eax + 8]
mov ecx, dword [edx + ecx + 4]
mov dword [ebp - 0xec], ecx
cmp dword [ebx + 0xc8], 0
jne 0x5145a6
mov eax, dword [ebp - 0xc]
inc dword [eax + 0x1c4]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
mov ecx, dword [edx + 0x1c0]
add ecx, dword [eax + 0x1c4]
mov dword [ebx + 0xc8], ecx
mov edx, dword [ebx + 0xc8]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.00507ca0
add esp, 8
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
mov eax, dword [esi + 4]
mov dword [ebp - 0xec], eax
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xe8], edx
cmp dword [ebp - 0xec], 0
jne 0x5146c8
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0x8c], 0
jle 0x514610
push str.cannot_open_savepoint___SQL_statements_in_progress
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebx + 0x68]
push edx
call fcn.004fc778
add esp, 0xc
mov dword [ebp - 8], 5
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.004fe1ec
pop ecx
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0xe4]
add eax, 9
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc5b8
add esp, 8
mov dword [ebp - 0xe0], eax
cmp dword [ebp - 0xe0], 0
je case.0x5123a1.0
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xe0]
add ecx, 8
mov dword [eax], ecx
mov edx, dword [ebp - 0xe4]
inc edx
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
mov eax, dword [ebp - 0xe0]
mov edx, dword [eax]
push edx
call fcn.004e8ee0
add esp, 0xc
mov ecx, dword [ebp - 0xc]
cmp byte [ecx + 0x1c], 0
je 0x514699
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x1c], 0
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x1c8], 1
jmp 0x5146a2
mov ecx, dword [ebp - 0xc]
inc dword [ecx + 0x1c0]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0xe0]
mov edx, dword [eax + 0x1bc]
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0xe0]
mov dword [eax + 0x1bc], edx
jmp case.0x5123a1.0
xor ecx, ecx
mov dword [ebp - 0xd4], ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x1bc]
mov dword [ebp - 0xdc], edx
jmp 0x5146f6
inc dword [ebp - 0xd4]
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ecx + 4]
mov dword [ebp - 0xdc], eax
cmp dword [ebp - 0xdc], 0
je 0x51471b
mov edx, dword [ebp - 0xe8]
push edx
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ecx]
push eax
call fcn.004fe358
add esp, 8
test eax, eax
jne 0x5146e1
cmp dword [ebp - 0xdc], 0
jne 0x51474c
mov edx, dword [ebp - 0xe8]
push edx
push str.no_such_savepoint:__s
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0x10
mov dword [ebp - 8], 1
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x8c], 0
jg 0x51476d
cmp dword [ebp - 0xec], 2
jne 0x5147a4
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0x88], 1
jle 0x5147a4
cmp dword [ebp - 0xec], 2
jne 0x51477d
mov eax, str.rollback
jmp 0x514782
mov eax, str.release
push eax
push str.cannot__s_savepoint___SQL_statements_in_progress
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebx + 0x68]
push ecx
call fcn.004fc778
mov dword [ebp - 8], 5
add esp, 0x10
jmp case.0x5123a1.0
mov eax, dword [ebp - 0xdc]
cmp dword [eax + 4], 0
jne 0x5147bc
mov edx, dword [ebp - 0xc]
cmp byte [edx + 0x1c8], 0
jne 0x5147c0
xor ecx, ecx
jmp 0x5147c5
mov ecx, 1
mov dword [ebp - 0x30], ecx
cmp dword [ebp - 0x30], 0
je 0x51481c
cmp dword [ebp - 0xec], 1
jne 0x51481c
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x1c], 1
push ebx
call fcn.0050fe10
pop ecx
cmp eax, 5
jne 0x514807
mov edx, dword [ebp - 4]
mov eax, 5
mov dword [ebx + 0x60], edx
mov ecx, dword [ebp - 0xc]
mov byte [ecx + 0x1c], 0
mov dword [ebp - 8], eax
mov dword [ebx + 0x64], eax
jmp 0x517c09
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x1c8], 0
mov ecx, dword [ebx + 0x64]
mov dword [ebp - 8], ecx
jmp 0x5148f1
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x1c0]
sub edx, dword [ebp - 0xd4]
dec edx
mov dword [ebp - 0xd4], edx
xor ecx, ecx
mov dword [ebp - 0xd0], ecx
jmp 0x51487a
mov eax, dword [ebp - 0xd4]
push eax
mov edx, dword [ebp - 0xec]
push edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0xd0]
shl ecx, 4
mov edx, dword [eax + 8]
mov ecx, dword [edx + ecx + 4]
push ecx
call fcn.00507cec
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x514874
jmp 0x517c68
inc dword [ebp - 0xd0]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 4]
cmp edx, dword [ebp - 0xd0]
jg 0x51483c
cmp dword [ebp - 0xec], 2
jne 0x5148f1
mov ecx, dword [ebp - 0xc]
test byte [ecx + 0xc], 0x10
je 0x5148f1
mov eax, dword [ebp - 0xc]
push eax
call fcn.00510db4
pop ecx
push 0
mov edx, dword [ebp - 0xc]
push edx
call fcn.0051fd08
add esp, 8
jmp 0x5148f1
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0x1bc]
mov dword [ebp - 0xd8], eax
mov edx, dword [ebp - 0xd8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [edx + 4]
mov dword [eax + 0x1bc], ecx
mov edx, dword [ebp - 0xd8]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
mov eax, dword [ebp - 0xc]
dec dword [eax + 0x1c0]
mov edx, dword [ebp - 0xc]
mov ecx, dword [edx + 0x1bc]
cmp ecx, dword [ebp - 0xdc]
jne 0x5148b4
cmp dword [ebp - 0xec], 1
jne case.0x5123a1.0
mov eax, dword [ebp - 0xdc]
mov ecx, dword [ebp - 0xc]
mov edx, dword [eax + 4]
mov dword [ecx + 0x1bc], edx
mov eax, dword [ebp - 0xdc]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc3d4
add esp, 8
cmp dword [ebp - 0x30], 0
jne case.0x5123a1.0
mov ecx, dword [ebp - 0xc]
dec dword [ecx + 0x1c0]
jmp case.0x5123a1.0
mov eax, dword [esi + 4]
mov dword [ebp - 0xec], eax
mov edx, dword [esi + 8]
mov dword [ebp - 0xe8], edx
cmp dword [ebp - 0xec], 0
je 0x514970
mov ecx, dword [ebp - 0xc]
cmp byte [ecx + 0x1c], 0
je 0x514974
xor eax, eax
jmp 0x514979
mov eax, 1
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0
je 0x5149be
cmp dword [ebp - 0xe8], 0
je 0x5149be
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x88], 1
jle 0x5149be
push str.cannot_rollback_transaction___SQL_statements_in_progress
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0xc
mov dword [ebp - 8], 5
jmp case.0x5123a1.0
cmp dword [ebp - 0xe4], 0
je 0x5149fd
cmp dword [ebp - 0xe8], 0
jne 0x5149fd
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x8c], 0
jle 0x5149fd
push str.cannot_commit_transaction___SQL_statements_in_progress
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0xc
mov dword [ebp - 8], 5
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc]
xor ecx, ecx
mov cl, byte [edx + 0x1c]
cmp ecx, dword [ebp - 0xec]
je 0x514a96
cmp dword [ebp - 0xe8], 0
je 0x514a2d
mov eax, dword [ebp - 0xc]
push eax
call fcn.0053b7c0
pop ecx
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x1c], 1
jmp 0x514a69
mov ecx, dword [ebp - 0xc]
mov al, byte [ebp - 0xec]
mov byte [ecx + 0x1c], al
push ebx
call fcn.0050fe10
pop ecx
cmp eax, 5
jne 0x514a69
mov edx, dword [ebp - 4]
mov cl, 1
mov dword [ebx + 0x60], edx
mov edx, 5
mov eax, dword [ebp - 0xc]
sub cl, byte [ebp - 0xec]
mov byte [eax + 0x1c], cl
mov dword [ebp - 8], edx
mov dword [ebx + 0x64], edx
jmp 0x517c09
mov eax, dword [ebp - 0xc]
push eax
call fcn.0053b50c
cmp dword [ebx + 0x64], 0
pop ecx
jne 0x514a85
mov dword [ebp - 8], 0x65
jmp 0x517c09
mov dword [ebp - 8], 1
jmp 0x517c09
cmp dword [ebp - 0xec], 0
jne 0x514aa6
mov ecx, str.cannot_start_a_transaction_within_a_transaction
jmp 0x514abb
cmp dword [ebp - 0xe8], 0
je 0x514ab6
mov ecx, str.cannot_rollback___no_transaction_is_active
jmp 0x514abb
mov ecx, str.cannot_commit___no_transaction_is_active
push ecx
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebx + 0x68]
push edx
call fcn.004fc778
add esp, 0xc
mov dword [ebp - 8], 1
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc]
mov eax, dword [esi + 4]
shl eax, 4
mov ecx, dword [edx + 8]
mov eax, dword [ecx + eax + 4]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov edx, dword [esi + 8]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.005071c0
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 5
jne 0x514b2d
mov eax, dword [ebp - 4]
mov edx, 5
mov dword [ebx + 0x60], eax
mov dword [ebp - 8], edx
mov dword [ebx + 0x64], edx
jmp 0x517c09
cmp dword [ebp - 8], 0
je case.0x5123a1.0
cmp dword [ebp - 8], 8
je case.0x5123a1.0
jmp 0x517c68
mov eax, dword [esi + 4]
mov dword [ebp - 0xe8], eax
lea eax, [ebp - 0xec]
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0xe4], ecx
push eax
mov edx, dword [ebp - 0xe4]
push edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0xe8]
shl ecx, 4
mov edx, dword [eax + 8]
mov ecx, dword [edx + ecx + 4]
push ecx
call fcn.0050bc7c
mov dword [ebp - 8], eax
add esp, 0xc
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 4
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 4]
shl ecx, 4
mov edx, dword [eax + 8]
add edx, ecx
mov dword [ebp - 0xec], edx
mov eax, dword [ebp - 0x1c]
push eax
call fcn.0050db90
pop ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx]
push eax
mov edx, dword [esi + 8]
push edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 4]
push eax
call fcn.0050bd4c
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [esi + 8], 1
jne 0x514c11
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx]
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0xc]
mov dword [ecx], eax
mov eax, dword [ebp - 0xc]
or dword [eax + 0xc], 0x10
jmp 0x514c28
cmp dword [esi + 8], 2
jne 0x514c28
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx]
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0xc]
mov byte [ecx + 0x38], al
cmp dword [esi + 4], 1
jne case.0x5123a1.0
mov eax, dword [ebp - 0xc]
push eax
call fcn.00510db4
pop ecx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xc]
mov edx, dword [esi + 4]
shl edx, 4
mov eax, dword [ecx + 8]
mov edx, dword [eax + edx + 4]
mov dword [ebp - 0xe8], edx
cmp dword [ebp - 0xe8], 0
je 0x514c7d
lea ecx, [ebp - 0xec]
push ecx
push 1
mov eax, dword [ebp - 0xe8]
push eax
call fcn.0050bc7c
add esp, 0xc
mov dword [ebp - 8], eax
jmp 0x514c8a
xor edx, edx
xor ecx, ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0xec], ecx
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
mov eax, dword [ebp - 0xec]
cmp eax, dword [esi + 8]
je case.0x5123a1.0
mov edx, dword [ebx + 0x68]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
push 0x558282
mov eax, dword [ebp - 0xc]
push eax
call fcn.004fc6f8
mov dword [ebx + 0x68], eax
add esp, 8
mov ecx, dword [ebp - 0xc]
mov edx, dword [esi + 4]
shl edx, 4
mov eax, dword [ecx + 8]
mov edx, dword [eax + edx + 0xc]
mov ecx, dword [edx]
cmp ecx, dword [ebp - 0xec]
je 0x514cf1
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.0051fd08
add esp, 8
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.00510db4
pop ecx
mov dword [ebp - 8], 0x11
jmp case.0x5123a1.0
xor eax, eax
xor edx, edx
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
mov ecx, dword [esi + 8]
mov dword [ebp - 0xe4], ecx
mov eax, dword [esi + 0xc]
mov dword [ebp - 0xe0], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xe0]
shl eax, 4
mov ecx, dword [edx + 8]
add ecx, eax
xor eax, eax
mov dword [ebp - 0xd0], ecx
mov edx, dword [ebp - 0xd0]
mov ecx, dword [edx + 4]
mov dword [ebp - 0xd8], ecx
mov al, byte [esi]
cmp eax, 0xa
jne 0x514d84
mov dword [ebp - 0xdc], 1
mov edx, dword [ebp - 0xd0]
mov ecx, dword [edx + 0xc]
mov al, byte [ecx + 0x38]
cmp al, byte [ebx + 0x6f]
jae 0x514d8c
mov edx, dword [ebp - 0xd0]
mov ecx, dword [edx + 0xc]
mov al, byte [ecx + 0x38]
mov byte [ebx + 0x6f], al
jmp 0x514d8c
xor edx, edx
mov dword [ebp - 0xdc], edx
cmp byte [esi + 3], 0
je 0x514dce
mov ecx, dword [ebp - 0xe4]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050db90
pop ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [edx]
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 2
jge 0x514dce
mov dword [ebp - 8], 0xb
jmp 0x517c68
cmp byte [esi + 1], 0xfa
jne 0x514e04
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebx]
mov eax, dword [ecx + 8]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp - 0xe8]
mov cl, byte [edx + 0x39]
mov byte [eax + 4], cl
mov edx, dword [ebp - 0xe8]
movzx ecx, word [edx + 6]
inc ecx
mov dword [ebp - 0xec], ecx
jmp 0x514e13
cmp byte [esi + 1], 0xf2
jne 0x514e13
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xec], eax
push 1
mov edx, dword [ebp - 0xe0]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [esi + 4]
push eax
push ebx
call fcn.00511ffc
add esp, 0x14
mov dword [ebp - 0xd4], eax
cmp dword [ebp - 0xd4], 0
je 0x517c3c
mov edx, dword [ebp - 0xd4]
mov byte [edx + 0x14], 1
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx]
push eax
mov edx, dword [ebp - 0xe8]
push edx
mov ecx, dword [ebp - 0xdc]
push ecx
mov eax, dword [ebp - 0xe4]
push eax
mov edx, dword [ebp - 0xd8]
push edx
call fcn.00507e4c
add esp, 0x14
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xe8]
mov dword [ecx + 0x40], eax
mov edx, dword [ebp - 8]
sub edx, 1
jb 0x514ea2
sub edx, 0xf
je 0x514f24
jmp 0x517c68
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx]
push eax
call fcn.0050bdb4
pop ecx
mov dword [ebp - 0xcc], eax
test byte [ebp - 0xcc], 1
je 0x514ec4
mov dl, 1
jmp 0x514ec6
xor edx, edx
mov eax, dword [ebp - 0xd4]
mov byte [eax + 0x18], dl
test byte [ebp - 0xcc], 2
je 0x514edc
mov cl, 1
jmp 0x514ede
xor ecx, ecx
mov eax, dword [ebp - 0xd4]
mov byte [eax + 0x19], cl
mov edx, dword [ebp - 0xd4]
cmp byte [edx + 0x18], 0
je 0x514ef9
cmp byte [esi + 1], 0xfa
je 0x514f13
mov eax, dword [ebp - 0xd4]
cmp byte [eax + 0x19], 0
je case.0x5123a1.0
cmp byte [esi + 1], 0xfa
je case.0x5123a1.0
mov dword [ebp - 8], 0xb
jmp 0x517c68
cmp byte [esi + 1], 0xfa
setne dl
mov ecx, dword [ebp - 0xd4]
and edx, 1
mov byte [ecx + 0x18], dl
xor edx, edx
mov eax, dword [ebp - 0xd4]
mov dl, byte [eax + 0x18]
mov eax, dword [ebp - 0xd4]
cmp edx, 1
sbb ecx, ecx
neg ecx
mov byte [eax + 0x19], cl
xor ecx, ecx
mov edx, dword [ebp - 0xd4]
xor eax, eax
mov dword [edx], ecx
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
push 1
push 0xffffffffffffffff
mov edx, dword [esi + 8]
push edx
mov ecx, dword [esi + 4]
push ecx
push ebx
call fcn.00511ffc
add esp, 0x14
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je 0x517c3c
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x14], 1
mov edx, dword [ebp - 0xec]
add edx, 0x28
push edx
mov ecx, dword [0x55443c]
push ecx
push 0x1f4
push 1
push 0
mov eax, dword [ebp - 0xc]
push eax
call fcn.0053be24
add esp, 0x18
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x514fe8
push 1
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0x28]
push ecx
call fcn.005071c0
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x51509e
cmp dword [esi + 0x10], 0
je 0x515070
push 2
lea eax, [ebp - 0x34]
push eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0x28]
push ecx
call fcn.0050b840
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x515064
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
push edx
mov ecx, dword [esi + 0x10]
push ecx
push 1
mov eax, dword [ebp - 0x34]
push eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0x28]
push ecx
call fcn.00507e4c
mov dword [ebp - 8], eax
add esp, 0x14
mov eax, dword [ebp - 0xec]
mov edx, dword [esi + 0x10]
mov dword [eax + 0x40], edx
mov ecx, dword [ebx]
mov eax, dword [ecx + 8]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp - 0xec]
mov cl, byte [edx + 0x39]
mov edx, dword [eax + 0x40]
mov byte [edx + 4], cl
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x18], 0
jmp 0x51509e
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
push edx
push 0
push 1
push 1
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 0x28]
push eax
call fcn.00507e4c
add esp, 0x14
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xec]
mov byte [edx + 0x18], 1
mov ecx, dword [ebp - 0xec]
xor eax, eax
mov al, byte [ecx + 0x18]
mov ecx, dword [ebp - 0xec]
cmp eax, 1
sbb edx, edx
neg edx
mov byte [ecx + 0x19], dl
jmp case.0x5123a1.0
push 0
push 0xffffffffffffffff
mov eax, dword [esi + 0xc]
push eax
mov edx, dword [esi + 4]
push edx
push ebx
call fcn.00511ffc
add esp, 0x14
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je 0x517c3c
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x14], 1
mov eax, dword [ebp - 0xec]
mov ecx, esi
mov byte [eax + 0x15], 1
mov edx, dword [ebp - 0xec]
mov al, byte [ecx + 8]
mov byte [edx + 0x16], al
mov edx, dword [ebp - 0xec]
mov byte [edx + 0x18], 1
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x19], 0
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
push ecx
push ebx
call fcn.0050f734
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
add esp, 8
xor ecx, ecx
mov dword [eax + edx*4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xe4], ecx
mov eax, dword [ebp - 0xe4]
cmp dword [eax], 0
je 0x515572
xor edx, edx
mov dl, byte [esi]
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebp - 0xe4]
mov byte [ecx + 0x14], 0
mov eax, dword [ebp - 0xe4]
cmp byte [eax + 0x18], 0
je 0x5153e0
mov edx, dword [ebp - 0x1c]
push edx
call fcn.005120d0
pop ecx
mov ecx, dword [ebp - 0x1c]
push ecx
call fcn.0050da08
pop ecx
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xb8], edx
mov eax, dword [ebp - 0xe4]
mov byte [eax + 0x11], 0
mov edx, dword [ebp - 0x1c]
test byte [edx + 0x1c], 4
jne 0x515376
mov ecx, dword [ebp - 0x1c]
test byte [ecx + 0x1c], 8
jne 0x5151d2
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
cmp dword [ebp - 0xb8], 0x80000000
jne 0x5152e8
cmp dword [ebp - 0xbc], 0
jne 0x5152e8
mov eax, dword [ebp - 0xbc]
mov edx, dword [ebp - 0xb8]
mov dword [ebp - 0xfc], eax
mov dword [ebp - 0xf8], edx
fild qword [ebp - 0xfc]
mov ecx, dword [ebp - 0x1c]
fld qword [ecx + 8]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
je 0x515239
mov edx, dword [ebp - 0x1c]
fld qword [edx + 8]
fld dword [0x517ce4]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x5152e8
mov dword [ebp - 0xec], 1
mov edx, dword [ebp - 0x1c]
fld qword [edx + 8]
fld dword [0x517ce4]
fxch st(1)
fucompp
fnstsw ax
test ah, 5
jp 0x515293
cmp dword [ebp - 0xe8], 0x7b
je 0x51526c
cmp dword [ebp - 0xe8], 0x6d
jne 0x5152ca
lea edx, [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.0050882c
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
jmp 0x5152ca
cmp dword [ebp - 0xe8], 0x46
je 0x5152a5
cmp dword [ebp - 0xe8], 0x37
jne 0x5152ca
lea edx, [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.00508864
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
cmp dword [ebp - 0xe8], 0x46
je 0x5152fa
cmp dword [ebp - 0xe8], 0x6d
jne 0x515339
mov eax, dword [ebp - 0xbc]
mov edx, dword [ebp - 0xb8]
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x100], edx
fild qword [ebp - 0x104]
mov ecx, dword [ebp - 0x1c]
fld qword [ecx + 8]
fxch st(1)
fucompp
fnstsw ax
test ah, 5
jp 0x515376
add dword [ebp - 0xbc], 1
adc dword [ebp - 0xb8], 0
jmp 0x515376
mov eax, dword [ebp - 0xbc]
mov edx, dword [ebp - 0xb8]
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x108], edx
fild qword [ebp - 0x10c]
mov ecx, dword [ebp - 0x1c]
fld qword [ecx + 8]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x515376
sub dword [ebp - 0xbc], 1
sbb dword [ebp - 0xb8], 0
lea edx, [ebp - 0xec]
push edx
push 0
push dword [ebp - 0xb8]
push dword [ebp - 0xbc]
push 0
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax]
push edx
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x5153ac
jmp 0x517c68
cmp dword [ebp - 0xec], 0
jne 0x51547b
mov ecx, dword [ebp - 0xe4]
mov byte [ecx + 0x11], 1
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebp - 0xbc]
mov dword [eax + 8], edx
mov edx, dword [ebp - 0xb8]
mov dword [eax + 0xc], edx
jmp 0x51547b
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0xc4], ecx
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax + 0x40]
mov dword [ebp - 0xdc], edx
mov cx, word [ebp - 0xc4]
mov word [ebp - 0xd8], cx
cmp dword [ebp - 0xe8], 0x7b
je 0x515418
cmp dword [ebp - 0xe8], 0x37
jne 0x515423
mov word [ebp - 0xd6], 8
jmp 0x51542c
mov word [ebp - 0xd6], 0
mov eax, dword [esi + 0xc]
lea edx, [ebp - 0xec]
shl eax, 3
lea ecx, [ebp - 0xdc]
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0xcc], eax
push edx
push 0
push 0
push 0
push ecx
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax]
push edx
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x515471
jmp 0x517c68
mov ecx, dword [ebp - 0xe4]
mov byte [ecx + 0x11], 0
mov eax, dword [ebp - 0xe4]
mov byte [eax + 0x17], 0
mov edx, dword [ebp - 0xe4]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
cmp dword [ebp - 0xe8], 0x6d
je 0x5154a2
cmp dword [ebp - 0xe8], 0x7b
jne 0x5154f8
cmp dword [ebp - 0xec], 0
jl 0x5154bd
cmp dword [ebp - 0xec], 0
jne 0x5154ee
cmp dword [ebp - 0xe8], 0x7b
jne 0x5154ee
lea eax, [ebp - 0xec]
push eax
mov edx, dword [ebp - 0xe4]
mov ecx, dword [edx]
push ecx
call fcn.00508d20
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov eax, dword [ebp - 0xe4]
mov byte [eax + 0x11], 0
jmp 0x515559
xor edx, edx
mov dword [ebp - 0xec], edx
jmp 0x515559
cmp dword [ebp - 0xec], 0
jg 0x515513
cmp dword [ebp - 0xec], 0
jne 0x515544
cmp dword [ebp - 0xe8], 0x46
jne 0x515544
lea ecx, [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax]
push edx
call fcn.00508e48
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov ecx, dword [ebp - 0xe4]
mov byte [ecx + 0x11], 0
jmp 0x515559
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax]
push edx
call fcn.00508d0c
pop ecx
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
cmp dword [edx], 0
je case.0x5123a1.0
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x14], 0
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050da08
pop ecx
mov ecx, dword [ebp - 0xec]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov edx, dword [ebp - 0xec]
mov byte [edx + 0x11], 0
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x17], 1
jmp case.0x5123a1.0
xor edx, edx
mov dword [ebp - 0xec], edx
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebp - 0xe8]
cmp dword [ecx], 0
je 0x5156ba
push 0x97
lea eax, [ebp - 0xdc]
push eax
mov edx, dword [ebp - 0x1c]
mov ecx, dword [edx + 0x14]
push ecx
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x18]
push edx
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ecx + 0x40]
push eax
call fcn.0051082c
add esp, 0x14
mov dword [ebp - 0xe0], eax
cmp dword [ebp - 0xe0], 0
jne 0x51563b
jmp 0x517c3c
xor edx, edx
mov dl, byte [esi]
cmp edx, 0x80
jne 0x515652
mov ecx, dword [ebp - 0xe0]
or word [ecx + 6], 0x10
lea eax, [ebp - 0xe4]
push eax
push 0
push 0
push 0
mov edx, dword [ebp - 0xe0]
push edx
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ecx]
push eax
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xe0]
push edx
call fcn.005109a0
cmp dword [ebp - 8], 0
pop ecx
je 0x515692
jmp case.0x5123a1.0
cmp dword [ebp - 0xe4], 0
sete cl
and ecx, 1
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xe8]
mov byte [eax + 0x17], 0
mov edx, dword [ebp - 0xe8]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
xor eax, eax
mov al, byte [esi]
cmp eax, 0x80
jne 0x5156de
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
cmp dword [ebp - 0xec], 0
jne case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [esi + 0x10]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0xdc], eax
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xe8], eax
mov edx, dword [ebp - 0xe8]
xor ecx, ecx
mov dword [edx + 0x58], ecx
mov eax, dword [ebp - 0xe8]
xor edx, edx
mov dword [eax + 0x5c], edx
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ecx]
mov dword [ebp - 0xe4], eax
mov edx, dword [ebp - 0xe8]
mov ecx, dword [edx + 0x40]
mov ax, word [ecx + 6]
mov word [ebp - 0xe0], ax
mov word [ebp - 0xec], 0
jmp 0x51578a
movzx edx, word [ebp - 0xec]
lea ecx, [edx + edx*4]
mov eax, dword [ebp - 0xdc]
test byte [eax + ecx*8 + 0x1c], 1
je 0x515783
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
xor ecx, ecx
mov dword [ebp - 0xe4], ecx
jmp 0x51579a
inc word [ebp - 0xec]
mov ax, word [ebp - 0xec]
cmp ax, word [ebp - 0xe0]
jb 0x51575b
cmp dword [ebp - 0xe4], 0
je case.0x5123a1.0
mov edx, dword [ebp - 0xe8]
mov ecx, dword [edx + 0x40]
mov dword [ebp - 0xd4], ecx
mov ax, word [ebp - 0xe0]
inc eax
mov word [ebp - 0xd0], ax
mov word [ebp - 0xce], 0x20
mov edx, dword [ebp - 0xdc]
mov dword [ebp - 0xc4], edx
mov ecx, dword [ebp - 0x1c]
push ecx
call fcn.0050db90
mov eax, dword [ebp - 0x1c]
pop ecx
mov edx, dword [eax]
mov dword [ebp - 0xbc], edx
mov edx, dword [eax + 4]
lea eax, [ebp - 0xd4]
mov dword [ebp - 0xb8], edx
mov ecx, dword [ebp - 0xe8]
add ecx, 0x58
push ecx
push 0
push 0
push 0
push eax
mov edx, dword [ebp - 0xe4]
push edx
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
test byte [ebp - 0xce], 0x20
jne 0x515846
mov eax, dword [ebp - 0xcc]
mov edx, dword [ebp - 0xc8]
cmp edx, dword [ebp - 0xb8]
jne 0x515852
cmp eax, dword [ebp - 0xbc]
jne 0x515852
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xcc]
mov dword [eax], edx
mov edx, dword [ebp - 0xc8]
mov dword [eax + 4], edx
jmp case.0x5123a1.0
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
mov dword [ebp - 0xe8], eax
cmp dword [ebp - 0xe8], 0
je 0x515949
xor edx, edx
mov dword [ebp - 0xe4], edx
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov dword [ebp - 0xdc], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0xd8], eax
lea edx, [ebp - 0xe4]
push edx
push 0
push dword [ebp - 0xd8]
push dword [ebp - 0xdc]
push 0
mov eax, dword [ebp - 0xe8]
push eax
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov dword [edx + 8], eax
mov eax, dword [ecx + 4]
mov dword [edx + 0xc], eax
cmp dword [ebp - 0xe4], 0
jne 0x5158fb
mov dl, 1
jmp 0x5158fd
xor edx, edx
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x11], dl
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x14], 0
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 0x5c], edx
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x17], 0
cmp dword [ebp - 0xe4], 0
je 0x515935
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xe4]
mov dword [edx + 0x58], ecx
jmp case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 0xec]
xor ecx, ecx
mov dword [edx + 0x58], ecx
jmp case.0x5123a1.0
mov ecx, dword [ebx + 0x34]
mov esi, dword [esi + 4]
mov ecx, dword [ecx + esi*4]
mov edx, dword [ecx + 0x4c]
mov eax, dword [ecx + 0x48]
add dword [ecx + 0x48], 1
adc dword [ecx + 0x4c], 0
mov ecx, dword [ebp - 0x20]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
mov eax, dword [ebp - 0x20]
and dx, 0xbf00
or dx, 4
mov word [eax + 0x1c], dx
jmp case.0x5123a1.0
mov dword [ebp - 0xec], 0
mov dword [ebp - 0xe8], 0
xor edx, edx
mov dword [ebp - 0xe0], edx
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xe4], edx
mov ecx, dword [ebp - 0xe4]
cmp dword [ecx], 0
jne 0x5159d6
jmp 0x515cbc
xor eax, eax
mov dword [ebp - 0xdc], eax
mov edx, dword [ebp - 0xe4]
cmp byte [edx + 0x13], 0
jne 0x515b9d
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.00507ec0
pop ecx
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
cmp dword [ebp - 0xe8], 0
jne 0x515a19
cmp dword [ebp - 0xec], 0
jne 0x515aab
lea edx, [ebp - 0xe0]
push edx
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.00508864
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x515a45
jmp 0x517c68
cmp dword [ebp - 0xe0], 0
je 0x515a64
mov dword [ebp - 0xec], 1
mov dword [ebp - 0xe8], 0
jmp 0x515aab
lea edx, [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.00507f6c
add esp, 8
cmp dword [ebp - 0xe8], 0x7fffffff
jne 0x515a9d
cmp dword [ebp - 0xec], 0xffffffff
jne 0x515a9d
mov edx, dword [ebp - 0xe4]
mov byte [edx + 0x13], 1
jmp 0x515aab
add dword [ebp - 0xec], 1
adc dword [ebp - 0xe8], 0
cmp dword [esi + 0xc], 0
je 0x515b59
mov ecx, dword [esi + 0xc]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xd8], ecx
mov eax, dword [ebp - 0xd8]
push eax
call fcn.0050db90
pop ecx
mov edx, dword [ebp - 0xd8]
cmp dword [edx + 4], 0x7fffffff
jne 0x515ae6
cmp dword [edx], 0xffffffff
je 0x515af4
mov ecx, dword [ebp - 0xe4]
cmp byte [ecx + 0x13], 0
je 0x515b00
mov dword [ebp - 8], 0xd
jmp 0x517c68
mov eax, dword [ebp - 0xd8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
add eax, 1
adc edx, 0
cmp edx, dword [ebp - 0xe8]
jne 0x515b23
cmp eax, dword [ebp - 0xec]
jbe 0x515b42
jmp 0x515b25
jle 0x515b42
mov eax, dword [ebp - 0xd8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
add eax, 1
adc edx, 0
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ebp - 0xec]
mov dword [ecx], eax
mov eax, dword [ebp - 0xe8]
mov dword [ecx + 4], eax
cmp dword [ebp - 0xe8], 0x7fffffff
jne 0x515b70
cmp dword [ebp - 0xec], 0xffffffff
jae 0x515b86
jmp 0x515b72
jge 0x515b86
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xe8]
add eax, 1
adc edx, 0
jmp 0x515b8a
xor eax, eax
xor edx, edx
push edx
push eax
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.00507e8c
add esp, 0xc
mov edx, dword [ebp - 0xe4]
cmp byte [edx + 0x13], 0
je 0x515c9d
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [ecx + 0x30]
mov dword [ebp - 0xec], eax
mov eax, dword [ecx + 0x34]
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0xdc], edx
cmp dword [ebp - 0xdc], 0
jne 0x515c07
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xe8]
and eax, 0xffffff
xor edx, edx
cmp edx, dword [ebp - 0xe8]
jne 0x515c07
cmp eax, dword [ebp - 0xec]
jne 0x515c07
add dword [ebp - 0xec], 1
adc dword [ebp - 0xe8], 0
jmp 0x515c35
lea ecx, [ebp - 0xec]
push ecx
push 8
call fcn.004fda00
add esp, 8
cmp dword [ebp - 0xdc], 5
jge 0x515c35
and dword [ebp - 0xec], 0xffffff
mov dword [ebp - 0xe8], 0
lea eax, [ebp - 0xe0]
push eax
push 0
push dword [ebp - 0xe8]
push dword [ebp - 0xec]
push 0
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
inc dword [ebp - 0xdc]
cmp dword [ebp - 0xdc], 0x64
jge 0x515c82
cmp dword [ebp - 8], 0
jne 0x515c82
cmp dword [ebp - 0xe0], 0
je 0x515bca
cmp dword [ebp - 8], 0
jne 0x515c9d
cmp dword [ebp - 0xe0], 0
jne 0x515c9d
mov dword [ebp - 8], 0xd
jmp 0x517c68
mov edx, dword [ebp - 0xe4]
mov byte [edx + 0x11], 0
mov ecx, dword [ebp - 0xe4]
mov byte [ecx + 0x17], 0
mov eax, dword [ebp - 0xe4]
xor edx, edx
mov dword [eax + 0x5c], edx
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 4
mov word [edx + 0x1c], ax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xec]
mov dword [ecx], eax
mov eax, dword [ebp - 0xe8]
mov dword [ecx + 4], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xec], edx
mov ecx, dword [esi + 0xc]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xdc], ecx
mov eax, dword [ebp - 0xe8]
mov edx, dword [eax]
mov dword [ebp - 0xe4], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0xe0], edx
test byte [esi + 3], 1
je 0x515d3e
inc dword [ebx + 0x74]
test byte [esi + 3], 2
je 0x515d58
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xe8]
mov edx, dword [eax]
mov dword [ecx + 0x30], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x34], edx
mov ecx, dword [ebp - 0xec]
test byte [ecx + 0x1c], 1
je 0x515d7a
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 0x14], edx
mov ecx, dword [ebp - 0xec]
xor eax, eax
mov dword [ecx + 0x18], eax
mov edx, dword [ebp - 0xdc]
cmp byte [edx + 0x15], 0
je 0x515ecb
mov ecx, dword [ebp - 0xdc]
cmp byte [ecx + 0x16], 0
jne 0x515dac
mov eax, dword [ebp - 0xdc]
mov edx, dword [eax + 0x30]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0xe4]
mov dword [eax + 0x38], edx
mov edx, dword [ebp - 0xe0]
mov dword [eax + 0x3c], edx
mov ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xdc]
mov eax, dword [ecx + 0x18]
mov dword [edx + 0x2c], eax
mov ecx, dword [ebp - 0xdc]
cmp byte [ecx + 0x16], 0
jne 0x515df6
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xec]
mov edx, dword [eax + 0x14]
cmp edx, dword [ecx + 0x24]
jne 0x515e3d
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xdc]
mov edx, dword [eax + 0x14]
mov dword [ecx + 0x30], edx
mov eax, dword [ebp - 0xdc]
cmp byte [eax + 0x16], 0
jne 0x515ebc
mov edx, dword [ebp - 0xec]
and word [edx + 0x1c], 0xfbff
mov ecx, dword [ebp - 0xec]
or word [ecx + 0x1c], 0x1000
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 0x24], edx
jmp 0x515ebc
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ecx + 0x2c]
add eax, 2
push eax
call fcn.004fc0dc
pop ecx
mov edx, dword [ebp - 0xdc]
mov dword [edx + 0x30], eax
mov ecx, dword [ebp - 0xdc]
cmp dword [ecx + 0x30], 0
je 0x517c3c
mov eax, dword [ebp - 0xdc]
mov edx, dword [eax + 0x2c]
push edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 0x14]
push eax
mov edx, dword [ebp - 0xdc]
mov ecx, dword [edx + 0x30]
push ecx
call fcn.004e8ee0
mov eax, dword [ebp - 0xdc]
mov ecx, dword [ebp - 0xdc]
add esp, 0xc
mov edx, dword [eax + 0x2c]
mov eax, dword [ecx + 0x30]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xdc]
mov ecx, dword [edx + 0x2c]
mov edx, dword [eax + 0x30]
mov byte [edx + ecx + 1], 0
mov ecx, dword [ebp - 0xdc]
mov byte [ecx + 0x14], 0
jmp 0x515f6a
test byte [esi + 3], 0x10
je 0x515edc
mov eax, dword [ebp - 0xdc]
mov edx, dword [eax + 0x58]
jmp 0x515ede
xor edx, edx
mov dword [ebp - 0xd4], edx
mov eax, dword [ebp - 0xec]
test byte [eax + 0x1d], 0x40
je 0x515f00
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
mov dword [ebp - 0xd8], eax
jmp 0x515f08
xor edx, edx
mov dword [ebp - 0xd8], edx
push 0
push 0
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ecx]
push eax
call fcn.00507e8c
add esp, 0xc
mov edx, dword [ebp - 0xd4]
push edx
xor ecx, ecx
mov cl, byte [esi + 3]
and ecx, 8
push ecx
mov eax, dword [ebp - 0xd8]
push eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0x18]
push ecx
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 0x14]
push edx
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
push 0
mov eax, dword [ebp - 0xdc]
mov edx, dword [eax]
push edx
call fcn.0050b18c
add esp, 0x24
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0xdc]
mov byte [ecx + 0x11], 0
mov eax, dword [ebp - 0xdc]
mov byte [eax + 0x17], 0
mov edx, dword [ebp - 0xdc]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0xb4], 0
je case.0x5123a1.0
cmp dword [esi + 0x10], 0
je case.0x5123a1.0
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xc]
mov ecx, dword [edx + 4]
mov edx, dword [eax + 8]
shl ecx, 4
mov ecx, dword [edx + ecx]
mov dword [ebp - 0xd0], ecx
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xcc], eax
test byte [esi + 3], 4
je 0x515fde
mov edx, 0x17
jmp 0x515fe3
mov edx, 0x12
mov dword [ebp - 0xc8], edx
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xcc]
push ecx
mov eax, dword [ebp - 0xd0]
push eax
mov edx, dword [ebp - 0xc8]
push edx
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0xb0]
push eax
mov edx, dword [ebp - 0xc]
call dword [edx + 0xb4]
add esp, 0x18
jmp case.0x5123a1.0
mov dword [ebp - 0xec], 0
mov dword [ebp - 0xe8], 0
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xe4], edx
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0xb4], 0
je 0x516072
cmp dword [esi + 0x10], 0
je 0x516072
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax + 8]
mov dword [ebp - 0xec], edx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebp - 0xe4]
push ecx
call fcn.00510304
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
push 0
push 0
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax]
push edx
call fcn.00507e8c
add esp, 0xc
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
push eax
call fcn.0050b3ac
pop ecx
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xe4]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
cmp dword [ebp - 8], 0
jne 0x516120
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0xb4], 0
je 0x516120
cmp dword [esi + 0x10], 0
je 0x516120
mov edx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xc]
mov ecx, dword [edx + 4]
mov edx, dword [eax + 8]
shl ecx, 4
mov ecx, dword [edx + ecx]
mov dword [ebp - 0x38], ecx
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x3c], eax
push dword [ebp - 0xe8]
push dword [ebp - 0xec]
mov ecx, dword [ebp - 0x3c]
push ecx
mov eax, dword [ebp - 0x38]
push eax
push 9
mov edx, dword [ebp - 0xc]
mov ecx, dword [edx + 0xb0]
push ecx
mov eax, dword [ebp - 0xc]
call dword [eax + 0xb4]
add esp, 0x18
test byte [esi + 8], 1
je case.0x5123a1.0
inc dword [ebx + 0x74]
jmp case.0x5123a1.0
cmp dword [esi + 4], 0
je 0x516148
mov edx, dword [ebx + 0x74]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.00510d94
add esp, 8
xor eax, eax
mov dword [ebx + 0x74], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], edx
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
mov dword [ebp - 0xe8], eax
mov edx, dword [ebp - 0xec]
push edx
call fcn.00510304
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov ecx, dword [ebp - 0xec]
cmp byte [ecx + 0x19], 0
je 0x5161eb
lea eax, [ebp - 0xdc]
push eax
mov edx, dword [ebp - 0xe8]
push edx
call fcn.00507f6c
add esp, 8
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x48]
cdq
cmp edx, dword [ebp - 0xd8]
jne 0x5161d6
cmp eax, dword [ebp - 0xdc]
jae 0x5161dd
jmp 0x517c1e
jge 0x5161dd
jmp 0x517c1e
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0xe4], eax
jmp 0x516214
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00507fe8
add esp, 8
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x48]
cmp edx, dword [ebp - 0xe4]
jae 0x516214
jmp 0x517c1e
push 0
mov ecx, dword [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050d604
add esp, 0xc
test eax, eax
je 0x516232
jmp 0x517c3c
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xe4]
mov dword [edx + 0x18], ecx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 0x10
mov word [ecx + 0x1c], dx
mov eax, dword [ebp - 0xec]
cmp byte [eax + 0x19], 0
je 0x516285
mov edx, dword [ebp - 0x20]
mov ecx, dword [edx + 0x14]
push ecx
mov eax, dword [ebp - 0xe4]
push eax
push 0
mov edx, dword [ebp - 0xe8]
push edx
call fcn.00508440
add esp, 0x10
mov dword [ebp - 8], eax
jmp 0x5162a7
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x14]
push eax
mov edx, dword [ebp - 0xe4]
push edx
push 0
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00508490
add esp, 0x10
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x1f], 1
jmp case.0x5123a1.0
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
cmp byte [edx + 0x14], 0
je 0x5162d8
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xec]
cmp byte [ecx + 0x17], 0
je 0x516301
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 0x20]
mov dword [ebp - 0xe4], edx
mov edx, dword [eax + 0x24]
mov dword [ebp - 0xe0], edx
jmp 0x5163f6
mov ecx, dword [ebp - 0xec]
cmp byte [ecx + 0x15], 0
je 0x51632a
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 0x38]
mov dword [ebp - 0xe4], edx
mov edx, dword [eax + 0x3c]
mov dword [ebp - 0xe0], edx
jmp 0x5163f6
mov ecx, dword [ebp - 0xec]
cmp dword [ecx + 0x50], 0
je 0x51639e
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 0x50]
mov ecx, dword [edx]
mov dword [ebp - 0xdc], ecx
lea ecx, [ebp - 0xe4]
mov eax, dword [ebp - 0xdc]
mov edx, dword [eax]
mov dword [ebp - 0xd8], edx
push ecx
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 0x50]
push edx
mov ecx, dword [ebp - 0xd8]
call dword [ecx + 0x30]
add esp, 8
mov dword [ebp - 8], eax
mov eax, dword [ebx + 0x68]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc3d4
add esp, 8
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ecx + 8]
mov dword [ebx + 0x68], eax
mov edx, dword [ebp - 0xdc]
xor ecx, ecx
mov dword [edx + 8], ecx
jmp 0x5163f6
mov eax, dword [ebp - 0xec]
push eax
call fcn.00510304
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov edx, dword [ebp - 0xec]
cmp byte [edx + 0x11], 0
je 0x5163de
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 8]
mov dword [ebp - 0xe4], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0xe0], eax
jmp 0x5163f6
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
push eax
call fcn.00507f6c
add esp, 8
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xe4]
mov dword [edx], ecx
mov ecx, dword [ebp - 0xe0]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 4
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x14], 1
mov edx, dword [ebp - 0xec]
mov byte [edx + 0x11], 0
mov ecx, dword [ebp - 0xec]
cmp dword [ecx], 0
je case.0x5123a1.0
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
push edx
call fcn.00505798
pop ecx
jmp case.0x5123a1.0
mov ecx, dword [ebx + 0x34]
mov eax, dword [esi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
mov dword [ebp - 0xe8], eax
cmp dword [ebp - 0xe8], 0
jne 0x51649e
mov dword [ebp - 0xe4], 1
jmp 0x5164b7
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00508864
add esp, 8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xec]
mov dl, byte [ebp - 0xe4]
mov byte [eax + 0x14], dl
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x17], 0
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x11], 0
mov edx, dword [ebp - 0xec]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
cmp dword [esi + 8], 0
jle case.0x5123a1.0
cmp dword [ebp - 0xe4], 0
je case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
inc dword [ebx + 0xbc]
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [ebp - 0xe8], ecx
test ecx, ecx
je 0x516581
lea eax, [ebp - 0xe4]
push eax
mov edx, dword [ebp - 0xe8]
push edx
call fcn.0050882c
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 0xe4], 0
jne 0x516555
mov al, 1
jmp 0x516557
xor eax, eax
mov edx, dword [ebp - 0xec]
mov byte [edx + 0x12], al
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x17], 0
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 0x5c], edx
mov ecx, dword [ebp - 0xec]
mov byte [ecx + 0x11], 0
jmp 0x51658b
mov dword [ebp - 0xe4], 1
mov eax, dword [ebp - 0xec]
mov dl, byte [ebp - 0xe4]
mov byte [eax + 0x14], dl
cmp dword [ebp - 0xe4], 0
je case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0xd0], 0
jne 0x517caa
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
jne 0x5165e0
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [ebp - 0xe8], ecx
cmp dword [ebp - 0xe8], 0
jne 0x516606
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x14], 1
jmp case.0x5123a1.0
mov dword [ebp - 0xe4], 1
xor edx, edx
mov dl, byte [esi]
cmp edx, 0x6a
jne 0x516631
lea ecx, [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0xe8]
push eax
call fcn.00508d20
add esp, 8
jmp 0x516647
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00508e48
add esp, 8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xec]
mov dl, byte [ebp - 0xe4]
mov byte [eax + 0x14], dl
mov ecx, dword [ebp - 0xec]
xor eax, eax
mov dword [ecx + 0x5c], eax
cmp dword [ebp - 0xe4], 0
jne 0x516686
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
cmp byte [esi + 3], 0
je 0x516686
xor ecx, ecx
mov cl, byte [esi + 3]
inc dword [ebx + ecx*4 + 0xb4]
mov eax, dword [ebp - 0xec]
mov byte [eax + 0x11], 0
jmp case.0x5123a1.0
mov edx, dword [ebx + 0x34]
mov ecx, dword [esi + 4]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [ebp - 0xe8], ecx
cmp dword [ebp - 0xe8], 0
je case.0x5123a1.0
mov eax, dword [ebp - 0x18]
test byte [eax + 0x1d], 0x40
je 0x5166d4
mov edx, dword [ebp - 0x18]
push edx
call fcn.0050d74c
pop ecx
jmp 0x5166d6
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx + 0x18]
mov dword [ebp - 0xe4], ecx
mov eax, dword [ebp - 0x18]
mov edx, dword [eax + 0x14]
mov dword [ebp - 0xe0], edx
test byte [esi + 3], 0x10
je 0x51670c
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 0x58]
jmp 0x51670e
xor eax, eax
push eax
mov edx, dword [esi + 0xc]
push edx
push 0
push 0
push 0x55829e
mov eax, dword [ebp - 0xe4]
cdq
push edx
push eax
mov ecx, dword [ebp - 0xe0]
push ecx
mov eax, dword [ebp - 0xe8]
push eax
call fcn.0050b18c
add esp, 0x24
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xec]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
mov dword [ebp - 0xe8], edx
cmp dword [ebp - 0xe8], 0
je case.0x5123a1.0
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx + 0x40]
mov dword [ebp - 0xdc], eax
lea eax, [ebp - 0xe4]
mov dx, word [esi + 0xc]
mov word [ebp - 0xd8], dx
lea edx, [ebp - 0xdc]
mov word [ebp - 0xd6], 0
mov ecx, dword [esi + 8]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xcc], ecx
push eax
push 0
push 0
push 0
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.005088b8
add esp, 0x18
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x5167f2
cmp dword [ebp - 0xe4], 0
jne 0x5167f2
mov eax, dword [ebp - 0xe8]
push eax
call fcn.0050b3ac
pop ecx
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xec]
xor ecx, ecx
mov dword [edx + 0x5c], ecx
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebp - 0xe8]
mov edx, dword [eax]
mov dword [ebp - 0xec], edx
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov ecx, dword [ebp - 0xe8]
push ecx
call fcn.00510304
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x517c68
mov eax, dword [ebp - 0xe8]
cmp byte [eax + 0x14], 0
jne case.0x5123a1.0
lea edx, [ebp - 0xe4]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00510bbc
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x51687e
jmp 0x517c68
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov cx, word [edx + 0x1c]
and cx, 0xbf00
or cx, 4
mov word [eax + 0x1c], cx
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xe4]
mov dword [edx], ecx
mov ecx, dword [ebp - 0xe0]
mov dword [edx + 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
cmp dword [eax], 0
je case.0x5123a1.0
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 0x40]
mov dword [ebp - 0xe4], ecx
mov ax, word [esi + 0x10]
mov word [ebp - 0xe0], ax
cmp byte [esi + 3], 0
je 0x5168f7
mov word [ebp - 0xde], 0xc
jmp 0x516900
mov word [ebp - 0xde], 4
mov edx, dword [esi + 0xc]
lea ecx, [ebp - 0xe8]
shl edx, 3
lea eax, [ebp - 0xe4]
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xd4], edx
push ecx
push eax
mov edx, dword [ebp - 0xec]
push edx
call fcn.00510ce4
mov dword [ebp - 8], eax
xor ecx, ecx
mov cl, byte [esi]
add esp, 0xc
cmp ecx, 0x29
jne 0x516943
neg dword [ebp - 0xe8]
jmp 0x516949
inc dword [ebp - 0xe8]
cmp dword [ebp - 0xe8], 0
jle case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
xor edx, edx
mov dword [ebp - 0xe8], edx
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0x84]
mov dword [ebp - 0xe4], eax
jmp 0x5169bb
mov edx, dword [ebp - 0xe4]
cmp dword [edx + 0x44], 0xbdf20da3
jne 0x5169ac
mov ecx, dword [ebp - 0xe4]
xor eax, eax
mov al, byte [ecx + 0x70]
cmp eax, 2
jge 0x5169ac
mov edx, dword [ebp - 0xe4]
cmp dword [edx + 0x60], 0
jl 0x5169ac
inc dword [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx + 8]
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0
jne 0x51697b
cmp dword [ebp - 0xe8], 1
jle 0x5169dd
mov dword [ebp - 8], 6
mov byte [ebx + 0x38], 2
jmp case.0x5123a1.0
mov edx, dword [esi + 0xc]
lea ecx, [ebp - 0xec]
mov dword [ebp - 0xe0], edx
push ecx
mov eax, dword [esi + 4]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xe0]
shl edx, 4
mov eax, dword [ecx + 8]
mov edx, dword [eax + edx + 4]
push edx
call fcn.0050bc4c
mov dword [ebp - 8], eax
add esp, 0xc
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov ax, word [ecx + 0x1c]
and ax, 0xbf00
or ax, 4
mov word [edx + 0x1c], ax
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xe0]
shl edx, 4
mov eax, dword [ecx + 8]
add eax, edx
push eax
call fcn.0052147c
add esp, 0xc
jmp case.0x5123a1.0
xor ecx, ecx
mov dword [ebp - 0xec], ecx
cmp dword [esi + 0xc], 0
je 0x516a8c
lea eax, [ebp - 0xec]
jmp 0x516a8e
xor eax, eax
push eax
mov edx, dword [esi + 4]
push edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 8]
shl ecx, 4
mov edx, dword [eax + 8]
mov ecx, dword [edx + ecx + 4]
push ecx
call fcn.0050b9e0
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [esi + 0xc], 0
je case.0x5123a1.0
mov eax, dword [ebp - 0xec]
add dword [ebx + 0x74], eax
cmp dword [esi + 0xc], 0
jle case.0x5123a1.0
mov ecx, dword [esi + 0xc]
mov esi, dword [ebx + 0x4c]
mov eax, dword [ebp - 0xec]
cdq
lea ecx, [ecx + ecx*4]
add dword [esi + ecx*8], eax
adc dword [esi + ecx*8 + 4], edx
jmp case.0x5123a1.0
xor eax, eax
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [esi + 4]
shl eax, 4
mov ecx, dword [edx + 8]
add ecx, eax
xor edx, edx
mov dword [ebp - 0xe4], ecx
mov dl, byte [esi]
cmp edx, 0x35
jne 0x516b19
mov dword [ebp - 0xe8], 5
jmp 0x516b23
mov dword [ebp - 0xe8], 2
mov ecx, dword [ebp - 0xe8]
lea eax, [ebp - 0xec]
push ecx
push eax
mov edx, dword [ebp - 0xe4]
mov ecx, dword [edx + 4]
push ecx
call fcn.0050b840
mov dword [ebp - 8], eax
add esp, 0xc
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dx, word [eax + 0x1c]
and dx, 0xbf00
or dx, 4
mov word [ecx + 0x1c], dx
jmp case.0x5123a1.0
mov eax, dword [esi + 4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.00505290
cmp dword [esi + 8], 0
pop ecx
jne 0x516bab
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0xec]
shl ecx, 4
mov edx, dword [eax + 8]
mov ecx, dword [edx + ecx + 0xc]
movzx eax, word [ecx + 0x3a]
and eax, 1
dec eax
jne 0x516c84
cmp dword [ebp - 0xec], 1
jne 0x516bbb
mov edx, 0x55829f
jmp 0x516bc0
mov edx, 0x5582b2
mov dword [ebp - 0xe8], edx
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0xe0], eax
lea eax, [ebx + 0x68]
mov ecx, dword [esi + 4]
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xd8], eax
mov edx, dword [esi + 0x10]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xec]
shl eax, 4
mov ecx, dword [edx + 8]
mov eax, dword [ecx + eax]
push eax
push str.SELECT_name__rootpage__sql_FROM__q._s_WHERE__s
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fd820
add esp, 0x14
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0
jne 0x516c28
mov dword [ebp - 8], 7
jmp 0x516c84
mov ecx, dword [ebp - 0xc]
xor eax, eax
lea edx, [ebp - 0xe0]
mov byte [ecx + 0x78], 1
mov dword [ebp - 0xd4], eax
push 0
push edx
push fcn.0052ab80
mov ecx, dword [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.005282c8
add esp, 0x14
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x516c6a
mov edx, dword [ebp - 0xd4]
mov dword [ebp - 8], edx
mov ecx, dword [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.004fc3d4
add esp, 8
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x78], 0
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.00505318
cmp dword [ebp - 8], 7
pop ecx
jne case.0x5123a1.0
jmp 0x517c3c
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.0051ea84
add esp, 8
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.0051ff60
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.0051fc88
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.00531418
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [esi + 8]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
inc eax
shl eax, 2
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc5b8
add esp, 8
mov dword [ebp - 0xe8], eax
cmp dword [ebp - 0xe8], 0
je 0x517c3c
mov ecx, dword [esi + 0xc]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xd8], ecx
mov eax, dword [esi + 4]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0x14], eax
xor edx, edx
mov dword [ebp - 0xe4], edx
jmp 0x516d8e
mov ecx, dword [ebp - 0xe4]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebp - 0x14]
push ecx
call fcn.0050da08
pop ecx
mov edx, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
mov dword [edx + ecx*4], eax
inc dword [ebp - 0xe4]
mov eax, dword [ebp - 0xe4]
cmp eax, dword [ebp - 0xec]
jl 0x516d63
mov edx, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
xor eax, eax
mov dword [edx + ecx*4], eax
lea edx, [ebp - 0xe0]
push edx
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ecx]
push eax
xor eax, eax
mov edx, dword [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xe8]
push ecx
mov edx, dword [ebp - 0xc]
mov al, byte [esi + 3]
shl eax, 4
mov ecx, dword [edx + 8]
mov eax, dword [ecx + eax + 4]
push eax
call fcn.0050c7cc
add esp, 0x14
mov dword [ebp - 0xdc], eax
mov edx, dword [ebp - 0xe8]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ebp - 0xe0]
cdq
add esp, 8
sub dword [ecx], eax
sbb dword [ecx + 4], edx
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050dc58
cmp dword [ebp - 0xe0], 0
pop ecx
jne 0x516e26
jmp 0x516e52
cmp dword [ebp - 0xdc], 0
jne 0x516e36
jmp 0x517c3c
push fcn.004fc37c
push 1
push 0xffffffffffffffff
mov edx, dword [ebp - 0xdc]
push edx
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050de78
add esp, 0x14
xor eax, eax
mov al, byte [ebp - 0xd]
push eax
mov edx, dword [ebp - 0x14]
push edx
call fcn.0050d5dc
add esp, 8
jmp case.0x5123a1.0
mov ecx, dword [esi + 4]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xec], ecx
mov eax, dword [esi + 8]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0xe8], eax
mov edx, dword [ebp - 0xec]
test byte [edx + 0x1c], 0x20
jne 0x516eb6
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.0050dd28
pop ecx
mov eax, dword [ebp - 0xec]
test byte [eax + 0x1c], 0x20
je 0x517c3c
mov edx, dword [ebp - 0xe8]
push dword [edx + 4]
push dword [edx]
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
push edx
call fcn.00501898
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0xd0], 0
jne 0x517caa
mov eax, dword [esi + 4]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0xec], eax
mov edx, dword [esi + 0xc]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0x20], edx
mov ecx, dword [ebp - 0xec]
test byte [ecx + 0x1c], 0x20
je 0x516f30
lea eax, [ebp - 0xe4]
push eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
push ecx
call fcn.00501b7c
add esp, 8
test eax, eax
jne 0x516f49
mov eax, dword [ebp - 0xec]
push eax
call fcn.0050dc58
pop ecx
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
push dword [ebp - 0xe0]
push dword [ebp - 0xe4]
mov eax, dword [ebp - 0x20]
push eax
call fcn.0050dcbc
add esp, 0xc
jmp case.0x5123a1.0
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0x14]
test byte [ecx + 0x1c], 0x20
jne 0x516f8f
mov eax, dword [ebp - 0x14]
push eax
call fcn.0050dd28
pop ecx
mov edx, dword [ebp - 0x14]
test byte [edx + 0x1c], 0x20
je 0x517c3c
cmp dword [ebp - 0xec], 0
je 0x516fe0
mov ecx, dword [ebp - 0x1c]
push dword [ecx + 4]
push dword [ecx]
cmp dword [ebp - 0xec], 0
jl 0x516fb4
mov dl, byte [ebp - 0xec]
and dl, 0xf
jmp 0x516fb6
mov dl, 0xff
push edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
push ecx
call fcn.00501bc8
add esp, 0x10
mov dword [ebp - 0xe8], eax
cmp dword [ebp - 0xe8], 0
je 0x516fe0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
cmp dword [ebp - 0xec], 0
jl case.0x5123a1.0
mov edx, dword [ebp - 0x1c]
push dword [edx + 4]
push dword [edx]
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
push edx
call fcn.00501898
add esp, 0xc
jmp case.0x5123a1.0
mov ecx, dword [ebx + 0x54]
inc dword [ebx + 0x54]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
cmp eax, dword [ebx + 0x58]
jl 0x517051
mov edx, dword [ebp - 0xec]
inc edx
mov dword [ebx + 0x58], edx
mov ecx, dword [ebp - 0xec]
inc ecx
shl ecx, 4
push ecx
mov eax, dword [ebx + 0x5c]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc6c4
add esp, 0xc
mov dword [ebx + 0x5c], eax
cmp dword [ebx + 0x5c], 0
je 0x517c3c
mov ecx, dword [ebp - 0xec]
shl ecx, 4
add ecx, dword [ebx + 0x5c]
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebp - 0xe8]
mov edx, dword [ebp - 0xc]
mov ecx, dword [edx + 0x30]
mov dword [eax], ecx
mov ecx, dword [edx + 0x34]
mov dword [eax + 4], ecx
mov eax, dword [ebp - 0xe8]
mov edx, dword [ebx + 0x74]
mov dword [eax + 8], edx
jmp case.0x5123a1.0
dec dword [ebx + 0x54]
mov ecx, dword [ebx + 0x54]
shl ecx, 4
add ecx, dword [ebx + 0x5c]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [eax + 0x30], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 0x34], ecx
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 8]
mov dword [ebx + 0x74], edx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0050db90
pop ecx
mov eax, dword [ebp - 0x18]
push eax
call fcn.0050db90
mov edx, dword [ebp - 0x14]
pop ecx
mov ecx, dword [ebp - 0x18]
mov eax, dword [edx]
mov edx, dword [edx + 4]
cmp edx, dword [ecx + 4]
jne 0x5170ed
cmp eax, dword [ecx]
jae case.0x5123a1.0
jmp 0x5170f3
jge case.0x5123a1.0
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x14]
cmp dword [eax + 4], 0
jne 0x51711c
cmp dword [eax], 0
jbe case.0x5123a1.0
jmp 0x517122
jle case.0x5123a1.0
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
jmp case.0x5123a1.0
mov ecx, dword [ebp - 0x14]
cmp dword [ecx + 4], 0
jne 0x517142
cmp dword [ecx], 0
jae case.0x5123a1.0
jmp 0x517148
jge case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0x14]
cmp dword [edx + 4], 0
jne case.0x5123a1.0
cmp dword [edx], 0
jne case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
mov dword [ebp - 4], ecx
jmp case.0x5123a1.0
xor eax, eax
mov al, byte [esi + 3]
mov dword [ebp - 0xec], eax
mov edx, dword [esi + 8]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xe0], edx
mov ecx, dword [ebx + 0x24]
mov dword [ebp - 0x9c], ecx
xor eax, eax
mov dword [ebp - 0xe8], eax
jmp 0x5171d5
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe0]
mov dword [edx + ecx*4], eax
mov edx, dword [ebp - 0xe0]
push edx
call fcn.00511fa4
pop ecx
inc dword [ebp - 0xe8]
add dword [ebp - 0xe0], 0x28
mov ecx, dword [ebp - 0xe8]
cmp ecx, dword [ebp - 0xec]
jl 0x5171a6
mov eax, dword [esi + 0x10]
xor ecx, ecx
mov dword [ebp - 0xdc], eax
mov edx, dword [esi + 0xc]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xe4], edx
mov dword [ebp - 0xac], edx
mov eax, dword [ebp - 0xe4]
xor edx, edx
inc dword [eax + 0x18]
xor eax, eax
mov word [ebp - 0xb8], 1
mov dword [ebp - 0xc0], ecx
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xb4], edx
xor eax, eax
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov dword [ebp - 0xc4], ecx
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xa4], edx
mov ecx, dword [ebp - 0xdc]
test byte [ecx + 3], 8
je 0x51725c
mov eax, dword [esi - 4]
mov dword [ebp - 0xa4], eax
mov edx, dword [ebp - 0x9c]
lea eax, [ebp - 0xdc]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
push eax
mov edx, dword [ebp - 0xdc]
call dword [edx + 0x10]
add esp, 0xc
cmp dword [ebp - 0xa8], 0
je 0x5172b2
lea ecx, [ebp - 0xd4]
push ecx
call fcn.00510f8c
pop ecx
push eax
push 0x5582f1
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebx + 0x68]
push edx
call fcn.004fc778
add esp, 0x10
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 8], ecx
lea eax, [ebp - 0xd4]
push eax
call fcn.0050d960
pop ecx
jmp case.0x5123a1.0
mov edx, dword [esi + 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xec], edx
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [ebp - 0xec]
push eax
call fcn.0050d898
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x517315
mov edx, dword [ebp - 0xec]
push edx
call fcn.00510f8c
pop ecx
push eax
push 0x5582f4
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0x10
xor edx, edx
mov dl, byte [ebp - 0xd]
push edx
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.0050d5dc
add esp, 8
mov eax, dword [ebp - 0xec]
push eax
call fcn.0050dd80
pop ecx
test eax, eax
je case.0x5123a1.0
jmp 0x517c1e
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebx + 0x68]
push ecx
call fcn.00532af4
add esp, 8
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc]
mov eax, dword [esi + 4]
shl eax, 4
mov ecx, dword [edx + 8]
mov eax, dword [ecx + eax + 4]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
push edx
call fcn.0050789c
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0x65
jne case.0x5123a1.0
mov ecx, dword [esi + 8]
dec ecx
xor eax, eax
mov dword [ebp - 4], ecx
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
cmp dword [esi + 4], 0
jne 0x5173b7
mov edx, dword [ebp - 0xc]
push edx
call fcn.00510db4
pop ecx
jmp case.0x5123a1.0
mov byte [ebx + 0x6e], 1
jmp case.0x5123a1.0
mov eax, esi
mov ecx, dword [esi + 4]
mov dword [ebp - 0xec], ecx
mov dl, byte [eax + 0xc]
mov byte [ebp - 0xe8], dl
mov cl, byte [ebp - 0xe8]
push ecx
mov eax, dword [esi + 8]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xec]
shl edx, 4
mov eax, dword [ecx + 8]
mov edx, dword [eax + edx + 4]
push edx
call fcn.0050cb60
add esp, 0xc
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
and ecx, 0xff
cmp ecx, 6
jne case.0x5123a1.0
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x40], eax
mov edx, dword [ebp - 0x40]
push edx
push str.database_table_is_locked:__s
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0x10
jmp case.0x5123a1.0
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00533aa8
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov edx, dword [ebx + 0x68]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 8]
mov dword [ebx + 0x68], edx
mov ecx, dword [ebp - 0xec]
xor eax, eax
mov dword [ecx + 8], eax
jmp case.0x5123a1.0
lea edx, [ebx + 0x68]
push edx
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.00533710
add esp, 0x10
mov dword [ebp - 8], eax
jmp case.0x5123a1.0
mov byte [ebx + 0x70], 2
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [esi + 4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.005338e8
add esp, 0xc
mov dword [ebp - 8], eax
mov byte [ebx + 0x70], 0
jmp case.0x5123a1.0
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0xec], ecx
mov dword [ebp - 0xe8], eax
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xe4], edx
lea edx, [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ecx]
mov dword [ebp - 0xe0], eax
push edx
mov ecx, dword [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0xe0]
call dword [eax + 0x18]
add esp, 8
mov dword [ebp - 8], eax
mov edx, dword [ebx + 0x68]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax + 8]
mov dword [ebx + 0x68], edx
mov ecx, dword [ebp - 0xe4]
xor eax, eax
mov dword [ecx + 8], eax
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
mov edx, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
mov dword [edx], ecx
push 0
push 0xffffffffffffffff
push 0
mov eax, dword [esi + 4]
push eax
push ebx
call fcn.00511ffc
add esp, 0x14
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je 0x51759c
mov edx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xe8]
mov dword [edx + 0x50], ecx
mov eax, dword [ebp - 0xe8]
mov edx, dword [eax]
mov eax, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [eax + 0x54], ecx
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x1e], 1
mov ecx, dword [ebp - 0xe8]
push ecx
mov eax, dword [ebp - 0xe0]
call dword [eax + 0x1c]
pop ecx
jmp case.0x5123a1.0
mov edx, dword [esi + 0xc]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xe0], edx
mov ecx, dword [ebp - 0xe0]
add ecx, 0x28
mov dword [ebp - 0xdc], ecx
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xd0], ecx
mov eax, dword [ebp - 0xd0]
mov edx, dword [eax + 0x50]
mov dword [ebp - 0xd8], edx
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ecx]
mov dword [ebp - 0xd4], eax
mov edx, dword [ebp - 0xd4]
mov ecx, dword [edx]
mov dword [ebp - 0xe4], ecx
mov eax, dword [ebp - 0xdc]
mov eax, dword [eax]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xe0]
mov eax, dword [edx]
mov dword [ebp - 0xe8], eax
xor edx, edx
mov dword [ebp - 0xcc], edx
mov ecx, dword [ebx + 0x24]
mov dword [ebp - 0xc4], ecx
xor eax, eax
mov dword [ebp - 0xc8], eax
jmp 0x51768b
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xc4]
shl eax, 3
mov ecx, dword [ebp - 0xc8]
lea eax, [eax + eax*4]
add eax, dword [ebp - 0xdc]
add eax, 0x28
mov dword [edx + ecx*4], eax
mov ecx, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xc4]
mov eax, dword [edx + ecx*4]
push eax
call fcn.00511fa4
pop ecx
inc dword [ebp - 0xc8]
mov edx, dword [ebp - 0xc8]
cmp edx, dword [ebp - 0xec]
jl 0x51764b
mov ecx, dword [ebp - 0xd4]
push ecx
call fcn.00532f0c
pop ecx
mov byte [ebx + 0x70], 1
mov eax, dword [ebp - 0xc4]
push eax
mov edx, dword [ebp - 0xec]
push edx
mov ecx, dword [esi + 0x10]
push ecx
mov eax, dword [ebp - 0xe8]
push eax
mov edx, dword [ebp - 0xd8]
push edx
mov ecx, dword [ebp - 0xe4]
call dword [ecx + 0x20]
add esp, 0x14
mov dword [ebp - 8], eax
mov byte [ebx + 0x70], 0
mov eax, dword [ebx + 0x68]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.004fc3d4
add esp, 8
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx + 8]
mov dword [ebx + 0x68], eax
mov edx, dword [ebp - 0xd4]
xor ecx, ecx
mov dword [edx + 8], ecx
mov eax, dword [ebp - 0xd4]
push eax
mov edx, dword [ebp - 0xc]
push edx
call fcn.00532f18
add esp, 8
cmp dword [ebp - 8], 0
jne 0x517734
mov ecx, dword [ebp - 0xd8]
push ecx
mov eax, dword [ebp - 0xe4]
call dword [eax + 0x28]
pop ecx
mov dword [ebp - 0xcc], eax
cmp dword [ebp - 0xcc], 0
je 0x517744
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 4], edx
mov ecx, dword [ebp - 0xd0]
mov byte [ecx + 0x14], 0
jmp case.0x5123a1.0
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0x44], ecx
mov eax, dword [esi + 0xc]
shl eax, 3
lea eax, [eax + eax*4]
add eax, dword [ebx + 0x4c]
mov dword [ebp - 0xe4], eax
mov edx, dword [ebp - 0x44]
cmp byte [edx + 0x14], 0
je 0x51778c
mov ecx, dword [ebp - 0xe4]
push ecx
call fcn.0050dc58
pop ecx
jmp case.0x5123a1.0
mov eax, dword [ebp - 0x44]
mov edx, dword [eax + 0x50]
mov ecx, dword [edx]
mov dword [ebp - 0xec], ecx
mov eax, dword [ebp - 0xec]
mov edx, dword [eax]
mov dword [ebp - 0xe8], edx
push 0x40
push 0
lea ecx, [ebp - 0xdc]
push ecx
call fcn.004e90c7
add esp, 0xc
mov eax, dword [ebp - 0xe4]
push eax
lea edx, [ebp - 0xd4]
push edx
call fcn.0050de44
mov cx, word [ebp - 0xb8]
add esp, 8
and cx, 0xbf00
lea edx, [ebp - 0xdc]
or cx, 1
mov word [ebp - 0xb8], cx
mov eax, dword [esi + 8]
push eax
push edx
mov ecx, dword [ebp - 0x44]
mov eax, dword [ecx + 0x50]
push eax
mov edx, dword [ebp - 0xe8]
call dword [edx + 0x2c]
add esp, 0xc
mov dword [ebp - 8], eax
mov ecx, dword [ebx + 0x68]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.004fc3d4
add esp, 8
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 8]
mov dword [ebx + 0x68], ecx
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 8], edx
cmp dword [ebp - 0xa8], 0
je 0x517842
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 8], ecx
xor eax, eax
mov al, byte [ebp - 0xd]
push eax
lea edx, [ebp - 0xd4]
push edx
call fcn.0050d5dc
add esp, 8
lea ecx, [ebp - 0xd4]
push ecx
mov eax, dword [ebp - 0xe4]
push eax
call fcn.0050de44
add esp, 8
jmp 0x517874
mov edx, dword [ebp - 0xe4]
push edx
call fcn.0050dd80
pop ecx
test eax, eax
je case.0x5123a1.0
jmp 0x517c1e
xor ecx, ecx
mov dword [ebp - 0xe4], ecx
mov eax, dword [ebx + 0x34]
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx*4]
mov dword [ebp - 0xe0], ecx
mov eax, dword [ebp - 0xe0]
cmp byte [eax + 0x14], 0
je 0x5178bb
jmp case.0x5123a1.0
mov edx, dword [ebp - 0xe0]
mov ecx, dword [edx + 0x50]
mov eax, dword [ecx]
mov dword [ebp - 0xec], eax
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx]
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebp - 0xec]
push eax
call fcn.00532f0c
pop ecx
mov byte [ebx + 0x70], 1
mov edx, dword [ebp - 0xe0]
mov ecx, dword [edx + 0x50]
push ecx
mov eax, dword [ebp - 0xe8]
call dword [eax + 0x24]
pop ecx
mov dword [ebp - 8], eax
mov byte [ebx + 0x70], 0
mov edx, dword [ebx + 0x68]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004fc3d4
add esp, 8
mov eax, dword [ebp - 0xec]
mov edx, dword [eax + 8]
mov dword [ebx + 0x68], edx
mov ecx, dword [ebp - 0xec]
xor eax, eax
mov dword [ecx + 8], eax
mov edx, dword [ebp - 0xec]
push edx
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.00532f18
add esp, 8
cmp dword [ebp - 8], 0
jne 0x517960
mov eax, dword [ebp - 0xe0]
mov edx, dword [eax + 0x50]
push edx
mov ecx, dword [ebp - 0xe8]
call dword [ecx + 0x28]
pop ecx
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0
jne case.0x5123a1.0
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 4], eax
jmp case.0x5123a1.0
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xec], edx
mov ecx, dword [esi + 4]
shl ecx, 3
lea ecx, [ecx + ecx*4]
add ecx, dword [ebx + 0x4c]
mov dword [ebp - 0xe8], ecx
mov eax, dword [ebp - 0xec]
push eax
call fcn.00532f0c
pop ecx
mov edx, dword [ebp - 0xe8]
mov ecx, dword [edx + 0x14]
push ecx
mov eax, dword [ebp - 0xec]
push eax
mov edx, dword [eax]
call dword [edx + 0x4c]
add esp, 8
mov dword [ebp - 8], eax
mov ecx, dword [ebx + 0x68]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.004fc3d4
add esp, 8
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 8]
mov dword [ebx + 0x68], ecx
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 8], edx
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00532f18
add esp, 8
jmp case.0x5123a1.0
mov edx, dword [esi + 0x10]
mov dword [ebp - 0xec], edx
mov ecx, dword [ebp - 0xec]
mov eax, dword [ecx]
mov dword [ebp - 0xe8], eax
mov edx, dword [esi + 8]
mov dword [ebp - 0xe4], edx
mov ecx, dword [ebp - 0xe8]
cmp dword [ecx + 0x34], 0
je case.0x5123a1.0
mov eax, dword [ebx + 0x24]
mov dword [ebp - 0xd4], eax
mov edx, dword [esi + 0xc]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [ebx + 0x4c]
mov dword [ebp - 0xd0], edx
xor ecx, ecx
mov dword [ebp - 0xe0], ecx
jmp 0x517a80
mov eax, dword [ebp - 0xd0]
push eax
call fcn.00511fa4
pop ecx
mov edx, dword [ebp - 0xd4]
mov ecx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0xd0]
mov dword [edx + ecx*4], eax
add dword [ebp - 0xd0], 0x28
inc dword [ebp - 0xe0]
mov edx, dword [ebp - 0xe0]
cmp edx, dword [ebp - 0xe4]
jl 0x517a51
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.00532f0c
pop ecx
lea eax, [ebp - 0xdc]
push eax
mov edx, dword [ebp - 0xd4]
push edx
mov ecx, dword [ebp - 0xe4]
push ecx
mov eax, dword [ebp - 0xec]
push eax
mov edx, dword [ebp - 0xe8]
call dword [edx + 0x34]
add esp, 0x10
mov dword [ebp - 8], eax
mov ecx, dword [ebx + 0x68]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.004fc3d4
add esp, 8
mov edx, dword [ebp - 0xec]
mov ecx, dword [edx + 8]
mov dword [ebx + 0x68], ecx
mov eax, dword [ebp - 0xec]
xor edx, edx
mov dword [eax + 8], edx
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xc]
push eax
call fcn.00532f18
add esp, 8
cmp dword [ebp - 8], 0
jne 0x517b21
cmp dword [esi + 4], 0
je 0x517b21
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0xdc]
mov dword [edx + 0x30], ecx
mov ecx, dword [ebp - 0xd8]
mov dword [edx + 0x34], ecx
inc dword [ebx + 0x74]
jmp case.0x5123a1.0
mov eax, dword [esi + 4]
mov dword [ebp - 0xec], eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xec]
shl edx, 4
mov eax, dword [ecx + 8]
mov edx, dword [eax + edx + 4]
push edx
call fcn.0050bf00
pop ecx
mov dword [ebp - 0xe4], eax
lea ecx, [ebp - 0xe8]
push ecx
mov eax, dword [ebp - 0xe4]
push eax
call fcn.00503508
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne case.0x5123a1.0
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1c], 4
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x20]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x5123a1.0
cmp dword [esi + 0x10], 0
je 0x517b96
mov eax, dword [esi + 0x10]
jmp 0x517b9e
mov eax, ebx
mov eax, dword [eax + 0xc0]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
je case.0x5123a1.0
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x90], 0
je case.0x5123a1.0
mov ecx, dword [ebp - 0xec]
push ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x94]
push edx
mov ecx, dword [ebp - 0xc]
call dword [ecx + 0x90]
add esp, 8
jmp case.0x5123a1.0
inc dword [ebp - 4]
cmp dword [ebp - 8], 0
je 0x512272
mov eax, dword [ebp - 8]
mov dword [ebx + 0x64], eax
push ebx
call fcn.0050fe10
cmp dword [ebp - 8], 0xc0a
pop ecx
jne 0x517c02
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x1e], 1
mov dword [ebp - 8], 1
add ebx, 0x88
push ebx
call fcn.00505400
pop ecx
mov eax, dword [ebp - 8]
jmp 0x517cdc
push 0x558314
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebx + 0x68]
push ecx
call fcn.004fc778
mov dword [ebp - 8], 0x12
add esp, 0xc
jmp 0x517be5
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x1e], 1
push 0x55832b
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [ebx + 0x68]
push ecx
call fcn.004fc778
mov dword [ebp - 8], 7
add esp, 0xc
jmp 0x517be5
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x1e], 0
je 0x517c78
mov dword [ebp - 8], 7
cmp dword [ebp - 8], 0xc0a
je 0x517be5
mov edx, dword [ebp - 8]
push edx
call fcn.0053b86c
pop ecx
push eax
push 0x558339
mov ecx, dword [ebp - 0xc]
push ecx
lea eax, [ebx + 0x68]
push eax
call fcn.004fc778
add esp, 0x10
jmp 0x517be5
mov dword [ebp - 8], 9
mov edx, dword [ebp - 8]
mov dword [ebx + 0x64], edx
mov ecx, dword [ebp - 8]
push ecx
call fcn.0053b86c
pop ecx
push eax
push 0x55833c
mov eax, dword [ebp - 0xc]
push eax
lea edx, [ebx + 0x68]
push edx
call fcn.004fc778
add esp, 0x10
jmp 0x517be5
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret