Function at 0x10055a5b
Capabilities:
Create process on windows
Enumerate pe sections
Reference sql statements
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x334
mov eax, dword [0x10109610]
xor eax, esp
mov dword [esp + 0x330], eax
push ebx
push esi
push edi
mov edi, ecx
mov esi, dword [edi]
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x14]
mov dl, byte [ecx + 0x39]
xor ebx, ebx
lea eax, [edi + 0x94]
push eax
mov dword [esp + 0x50], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], esi
mov byte [esp + 0x58], dl
mov dword [esp + 0x24], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x11c], eax
call fcn.10042140
add esp, 4
cmp dword [edi + 0x64], 7
je 0x1005213d
mov dword [edi + 0x64], ebx
mov dword [edi + 0x78], ebx
mov eax, dword [esi + 0xd8]
mov dword [esi + 0x19c], ebx
test eax, eax
jne 0x10055ced
mov ecx, dword [edi + 0x60]
mov dword [esp + 0x28], ecx
mov eax, ecx
mov esi, ebx
mov ecx, ebx
jmp 0x10051bfc
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
cmp byte [edx + 0x1e], 0
jne 0x1005213d
mov ebx, dword [edi + 0x14]
lea eax, [eax + eax*4]
lea ebx, [ebx + eax*4]
mov eax, dword [edx + 0x100]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x10051c5e
mov eax, dword [edx + 0x108]
cmp eax, dword [esp + 0x94]
jne 0x10051c57
mov ecx, edx
mov edx, dword [ecx + 0x104]
push edx
call dword [esp + 0x20]
add esp, 4
test eax, eax
jne 0x10055bba
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x94], eax
inc dword [esp + 0x94]
movzx eax, byte [ebx]
mov al, byte [eax + 0x100e8580]
mov byte [esp + 0x37], al
test al, 2
je 0x10051c9c
mov eax, dword [ebx + 8]
mov edx, dword [edi + 0x4c]
lea ecx, [eax + eax*4]
lea esi, [edx + ecx*8]
mov dword [esp + 0x2c], esi
call fcn.1004c270
mov ecx, 1
mov eax, esi
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x20]
mov dword [eax + 0x18], 0
jmp 0x10051d1a
test al, 4
je 0x10051cf0
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x4c]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov al, byte [esp + 0x37]
mov dword [esp + 0x20], ecx
test al, 8
je 0x10051cde
test byte [esp + 0x37], 0x20
mov eax, dword [ebx + 8]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea edx, [eax + edx*8]
mov dword [esp + 0x50], edx
je 0x10051d1a
mov edx, dword [ebx + 0xc]
lea edx, [edx + edx*4]
lea esi, [eax + edx*8]
mov dword [esp + 0x2c], esi
jmp 0x10051d1a
test al, 0x10
je 0x10051d1e
mov eax, dword [ebx + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea eax, [eax + edx*8]
jmp 0x10051d16
test al, 8
je 0x10051d06
mov eax, dword [ebx + 8]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea edx, [eax + edx*8]
mov dword [esp + 0x50], edx
jmp 0x10051d1a
test al, 0x10
je 0x10051d1e
mov eax, dword [ebx + 0xc]
mov edx, dword [edi + 0x4c]
lea eax, [eax + eax*4]
lea eax, [edx + eax*8]
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0x18]
mov al, byte [ebx]
mov byte [esp + 0x37], al
movzx eax, al
mov dword [esp + 0x30], eax
dec eax
cmp eax, 0x90
ja case.0x10051d33.12
jmp dword [eax*4 + 0x10055d24]
mov ecx, dword [edx + 0xd8]
test ecx, ecx
jne 0x10055ced
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea ecx, [eax + edx*8]
mov eax, dword [esp + 0x28]
mov edx, 4
mov word [ecx + 0x1c], dx
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
dec eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x28]
inc eax
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], eax
je 0x10051bf0
jmp 0x10052161
mov ecx, dword [ecx]
mov dword [esp + 0x28], ecx
jmp case.0x10051d33.12
mov eax, dword [esp + 0x28]
mov esi, dword [ecx]
mov edx, 4
mov word [ecx + 0x1c], dx
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov dword [esp + 0x28], esi
jmp case.0x10051d33.12
mov eax, dword [esp + 0x6c]
test byte [eax + 0x1c], 1
je case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x28]
mov dword [edi + 0x64], ecx
mov dword [edi + 0x60], edx
mov eax, dword [ebx + 8]
mov dword [edi + 0x68], eax
mov ebx, dword [ebx + 0x10]
test ebx, ebx
je 0x10051df2
mov eax, dword [esp + 0x18]
push ebx
push 0x100f06f8
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 8
push edi
call fcn.1004eda0
mov esi, 5
add esp, 4
cmp eax, esi
jne 0x10055c1d
mov dword [edi + 0x64], esi
jmp 0x1005218a
mov ecx, 4
mov word [esi + 0x1c], cx
mov eax, dword [ebx + 4]
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp case.0x10051d33.12
mov edx, 4
mov word [esi + 0x1c], dx
mov ebx, dword [ebx + 0x10]
mov eax, dword [ebx]
mov dword [esi], eax
mov ecx, dword [ebx + 4]
mov dword [esi + 4], ecx
jmp case.0x10051d33.12
mov edx, 8
mov word [esi + 0x1c], dx
mov eax, dword [ebx + 0x10]
fld qword [eax]
fstp qword [esi + 8]
jmp case.0x10051d33.12
mov ecx, dword [ebx + 0x10]
mov byte [ebx], 0x1c
mov dword [esp + 0x1c], ecx
call fcn.10039d80
cmp byte [esp + 0x54], 1
mov dword [ebx + 4], eax
je 0x10051fbf
test ecx, ecx
jne 0x10051eab
test byte [esi + 0x1c], 0x20
je 0x10051e8e
mov ecx, dword [esp + 0x2c]
mov edi, dword [ecx]
call fcn.1003dd60
mov esi, dword [esp + 0x2c]
mov dx, word [esi + 0x1c]
mov eax, 0xbf01
and dx, ax
or dx, 1
mov word [esi + 0x1c], dx
mov byte [esi + 0x1e], 5
jmp 0x10051f2b
mov eax, dword [esi + 0x10]
test eax, eax
je 0x10051eb7
mov eax, dword [eax + 0x50]
jmp 0x10051ebc
mov eax, 0x3b9aca00
xor edi, edi
mov dword [esp + 0x38], eax
test eax, eax
js 0x10051ed1
cmp byte [edi + ecx], 0
je 0x10051ed1
inc edi
cmp edi, eax
jle 0x10051ec6
xor ecx, ecx
mov dword [esp + 0x24], 0x202
push esi
cmp ecx, fcn.10037ca0
jne 0x10051ef5
call fcn.1004c2d0
mov eax, dword [esp + 0x20]
mov dword [esi + 0x14], eax
mov dword [esi + 0x24], eax
jmp 0x10051f09
call fcn.1004c2d0
mov edx, dword [esp + 0x20]
mov dword [esi + 0x14], edx
mov dword [esp + 0x28], 0xa02
add esp, 4
mov dword [esi + 0x20], 0
cmp edi, dword [esp + 0x38]
jg 0x10051f2b
mov ax, word [esp + 0x24]
mov dword [esi + 0x18], edi
mov word [esi + 0x1c], ax
mov word [esi + 0x1e], 0x103
movzx ecx, byte [esp + 0x54]
mov eax, esi
call fcn.1004bee0
test eax, eax
jne 0x1005213d
mov eax, esi
call fcn.1004c040
test eax, eax
jne 0x1005213d
mov cx, word [esi + 0x1c]
mov dword [esi + 0x24], eax
mov edx, 0xfbff
and cx, dx
mov eax, 0x800
or cx, ax
mov word [esi + 0x1c], cx
cmp byte [ebx + 1], 0xff
jne 0x10051f80
mov ecx, dword [ebx + 0x10]
mov edx, dword [esp + 0x18]
push ecx
push edx
call fcn.10037ca0
add esp, 8
mov ecx, dword [esp + 0x18]
mov byte [ebx + 1], 0xff
mov eax, dword [esi + 0x14]
mov dword [ebx + 0x10], eax
mov esi, dword [esi + 0x18]
mov dword [ebx + 4], esi
cmp esi, dword [ecx + 0x50]
jle case.0x10051d33.12
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
push str.string_or_blob_too_big
add esi, 0x74
call fcn.100380b0
mov dword [esp + 0x18], 0x12
jmp 0x1005215e
mov edx, dword [esp + 0x18]
cmp eax, dword [edx + 0x50]
jg 0x10051f9d
mov eax, 0xa02
mov word [esi + 0x1c], ax
mov ecx, dword [ebx + 0x10]
mov al, byte [esp + 0x54]
mov dword [esi + 0x14], ecx
mov edx, dword [ebx + 4]
mov dword [esi + 0x18], edx
mov byte [esi + 0x1f], al
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 0x10]
push 0
push 0
push ecx
push edx
push esi
call fcn.1004c900
mov al, byte [esp + 0x68]
add esp, 0x14
mov byte [esi + 0x1f], al
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x24], ebx
test ebx, ebx
jle case.0x10051d33.12
lea ecx, [ecx + ecx*4]
lea eax, [eax + eax*4 - 5]
add ecx, ecx
add eax, eax
add ecx, ecx
add ecx, ecx
add eax, eax
add eax, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov ebx, dword [edi + 0x38]
dec dword [esp + 0x24]
add ebx, eax
add eax, 0x28
mov ecx, ebx
mov dword [esp + 0x1c], eax
call fcn.1004c7c0
test eax, eax
jne 0x10051f9d
mov eax, dword [esp + 0x38]
mov esi, dword [edi + 0x4c]
add esi, eax
add eax, 0x28
mov dword [esp + 0x2c], esi
mov dword [esp + 0x38], eax
call fcn.1004c270
push 0x800
mov ecx, 1
push ebx
push esi
mov word [esi + 0x1c], cx
call fcn.1004c7f0
add esp, 0xc
cmp dword [esp + 0x24], 0
jg 0x1005203a
jmp case.0x10051d33.12
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 4]
mov edi, dword [edi + 0x4c]
mov ebx, dword [ebx + 8]
lea edx, [eax + eax*4]
lea esi, [edi + edx*8]
lea eax, [ebx + ebx*4]
lea edi, [edi + eax*8]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x2c], edi
test ecx, ecx
je case.0x10051d33.12
mov ebx, dword [edi + 0x24]
dec dword [esp + 0x24]
push esi
mov eax, edi
mov dword [edi + 0x24], 0
call fcn.1004c8c0
mov dword [esi + 0x24], ebx
add esp, 4
add esi, 0x28
add edi, 0x28
cmp dword [esp + 0x24], 0
jne 0x100520c6
mov dword [esp + 0x2c], edi
mov dword [esp + 0x20], esi
jmp case.0x10051d33.12
mov ebx, dword [ebx + 8]
mov edx, dword [edi + 0x4c]
mov eax, dword [esp + 0x20]
lea ecx, [ebx + ebx*4]
push 0x1000
lea esi, [edx + ecx*8]
push eax
push esi
mov dword [esp + 0x38], esi
call fcn.1004c7f0
mov ecx, 0x1000
add esp, 0xc
test word [esi + 0x1c], cx
je case.0x10051d33.12
mov eax, esi
call fcn.1004c040
test eax, eax
je case.0x10051d33.12
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x4c]
push str.out_of_memory
add esi, 0x74
mov byte [eax + 0x1e], 1
call fcn.100380b0
mov dword [esp + 0x18], 7
add esp, 4
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x14]
push eax
mov dword [eax + 0x64], esi
call fcn.1004eda0
add esp, 4
cmp esi, 0xc0a
jne 0x10052185
mov ecx, dword [esp + 0x18]
mov byte [ecx + 0x1e], 1
mov esi, 1
mov edx, dword [esp + 0x118]
push edx
call fcn.100421a0
mov ecx, dword [esp + 0x340]
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebx
xor ecx, esp
call fcn.100b2e5c
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebx + 8]
mov eax, dword [edi + 0x4c]
mov ecx, dword [esp + 0x20]
lea edx, [ebx + ebx*4]
push 0x1000
lea eax, [eax + edx*8]
push ecx
push eax
mov dword [esp + 0x38], eax
call fcn.1004c7f0
add esp, 0xc
jmp case.0x10051d33.12
push 1
push edi
call fcn.1004ecf0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
mov ecx, dword [edi + 0x50]
add ecx, 2
or ecx, 1
mov dword [edi + 0x50], ecx
mov eax, dword [ebx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea esi, [eax + edx*8]
mov dword [edi + 0x78], esi
cmp dword [ebx + 8], 0
mov dword [esp + 0x8c], 0
jle 0x10052243
lea esp, [esp]
call fcn.1004c100
mov ecx, esi
call fcn.10051880
mov eax, dword [esp + 0x8c]
inc eax
add esi, 0x28
mov dword [esp + 0x8c], eax
cmp eax, dword [ebx + 8]
jl 0x10052220
mov ecx, dword [esp + 0x18]
cmp byte [ecx + 0x1e], 0
jne 0x1005213d
mov edx, dword [esp + 0x28]
inc edx
mov dword [edi + 0x60], edx
mov esi, 0x64
jmp 0x1005218a
movzx eax, word [ecx + 0x1c]
mov edx, dword [esp + 0x50]
mov dl, byte [edx + 0x1c]
or dl, al
test dl, 1
je 0x10052283
mov esi, dword [esp + 0x2c]
call fcn.1004c640
jmp case.0x10051d33.12
test eax, 0x4000
je 0x10052295
mov esi, dword [esp + 0x20]
call fcn.1004c0a0
mov ecx, esi
test byte [ecx + 0x1c], 0x12
jne 0x100522b1
movzx edi, byte [esp + 0x54]
mov esi, dword [esp + 0x20]
call fcn.1004c150
test eax, eax
jne 0x1005213d
mov esi, dword [esp + 0x50]
mov eax, 0x4000
test word [esi + 0x1c], ax
je 0x100522c5
call fcn.1004c0a0
test byte [esi + 0x1c], 0x12
jne 0x100522e1
movzx edi, byte [esp + 0x54]
mov esi, dword [esp + 0x50]
call fcn.1004c150
test eax, eax
jne 0x1005213d
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x20]
mov eax, dword [ebx + 0x18]
add eax, dword [ecx + 0x18]
mov esi, dword [esp + 0x2c]
cdq
mov ecx, edx
mov edx, dword [esp + 0x18]
mov edi, eax
mov eax, dword [edx + 0x50]
cdq
cmp ecx, edx
jg 0x10051f9d
jl 0x10052312
cmp edi, eax
ja 0x10051f9d
mov ax, word [esi + 0x1c]
mov ecx, 0xbf02
and ax, cx
or ax, 2
xor edx, edx
cmp esi, ebx
sete dl
mov word [esi + 0x1c], ax
lea eax, [edi + 2]
push edx
push eax
push esi
call fcn.1004bf00
add esp, 0xc
test eax, eax
jne 0x1005213d
cmp esi, ebx
je 0x1005235b
mov ecx, dword [ebx + 0x18]
mov edx, dword [ebx + 0x14]
mov eax, dword [esi + 0x14]
push ecx
push edx
push eax
call fcn.100b6420
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
mov eax, dword [ebx + 0x18]
add eax, dword [esi + 0x14]
push ecx
push edx
push eax
call fcn.100b6420
mov ecx, dword [esi + 0x14]
mov byte [edi + ecx], 0
mov edx, dword [esi + 0x14]
mov cl, byte [esp + 0x60]
mov byte [edi + edx + 1], 0
mov eax, 0x200
add esp, 0xc
or word [esi + 0x1c], ax
mov dword [esi + 0x18], edi
mov byte [esi + 0x1f], cl
jmp case.0x10051d33.12
mov esi, dword [esp + 0x20]
mov edi, esi
call fcn.10051980
mov edi, dword [esp + 0x50]
call fcn.10051980
movzx ecx, word [edi + 0x1c]
movzx eax, word [esi + 0x1c]
or eax, ecx
mov dword [esp + 0x1c], eax
test al, 1
jne 0x10052567
movzx eax, word [esi + 0x1c]
and al, cl
test al, 4
je 0x1005247e
mov eax, dword [edi]
mov edx, dword [edi + 4]
movzx edi, byte [ebx]
mov ecx, dword [esi]
mov esi, dword [esi + 4]
add edi, 0xffffffac
cmp edi, 3
ja case.default.0x100523ea
jmp dword [edi*4 + 0x10055f68]
add eax, ecx
adc edx, esi
jmp 0x1005245c
sub eax, ecx
sbb edx, esi
jmp 0x1005245c
push esi
push ecx
push edx
push eax
call fcn.100bc8d0
jmp 0x1005245c
mov edi, ecx
or edi, esi
je 0x10052567
mov edi, ecx
and edi, esi
cmp edi, 0xffffffff
jne 0x1005242e
test eax, eax
jne 0x1005242e
cmp edx, 0x80000000
jne 0x1005242e
mov ecx, 1
xor esi, esi
push esi
push ecx
push edx
push eax
call fcn.100bf830
jmp 0x1005245c
mov edi, ecx
or edi, esi
je 0x10052567
mov edi, ecx
and edi, esi
cmp edi, 0xffffffff
jne 0x10052453
mov ecx, 1
xor esi, esi
push esi
push ecx
push edx
push eax
call fcn.100bf8e0
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov ax, word [ecx + 0x1c]
mov dword [ecx + 4], edx
mov edx, 0xbf04
and ax, dx
or ax, 4
mov word [ecx + 0x1c], ax
jmp case.0x10051d33.12
mov eax, esi
call fcn.1004c430
fstp qword [esp + 0x38]
mov eax, edi
call fcn.1004c430
movzx eax, byte [ebx]
add eax, 0xffffffac
cmp eax, 3
ja case.default.0x1005249b
jmp dword [eax*4 + 0x10055f78]
fadd qword [esp + 0x38]
jmp 0x10052517
fsub qword [esp + 0x38]
jmp 0x10052517
fmul qword [esp + 0x38]
jmp 0x10052517
fld qword [esp + 0x38]
fld st(0)
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x10052563
fdivp st(1)
jmp 0x10052517
fld qword [esp + 0x38]
call fcn.100d0096
mov esi, eax
mov edi, edx
call fcn.100d0096
mov ecx, esi
or ecx, edi
je 0x10052567
mov ecx, esi
and ecx, edi
cmp ecx, 0xffffffff
jne 0x100524f9
mov esi, 1
xor edi, edi
push edi
push esi
push edx
push eax
call fcn.100bf8e0
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], edx
fild qword [esp + 0x160]
sub esp, 8
fst qword [esp + 0x40]
fstp qword [esp]
call fcn.10039d50
add esp, 8
test eax, eax
jne 0x10052567
mov eax, dword [esp + 0x2c]
fld qword [esp + 0x38]
mov dx, word [eax + 0x1c]
fstp qword [eax + 8]
mov ecx, 0xbf08
and dx, cx
or dx, 8
test byte [esp + 0x1c], 8
mov word [eax + 0x1c], dx
jne case.0x10051d33.12
mov esi, eax
call fcn.1004c4b0
jmp case.0x10051d33.12
fstp st(0)
fstp st(0)
mov esi, dword [esp + 0x2c]
call fcn.1004c640
jmp case.0x10051d33.12
mov edx, dword [edi + 0x24]
movzx esi, byte [ebx + 3]
mov eax, dword [ebx + 8]
mov ecx, dword [edi + 0x4c]
mov dword [esp + 0x1c], edx
lea eax, [eax + eax*4]
xor edx, edx
lea ecx, [ecx + eax*8]
test esi, esi
jle 0x100525a6
mov eax, dword [esp + 0x1c]
mov dword [eax + edx*4], ecx
call fcn.10051880
inc edx
add ecx, 0x28
cmp edx, esi
jl 0x10052592
cmp byte [ebx + 1], 0xfb
jne 0x100525c3
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x178], ecx
mov dword [esp + 0x17c], 0
jmp 0x100525d6
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x17c], eax
mov edx, dword [eax]
mov dword [esp + 0x178], edx
mov eax, dword [ebx + 0xc]
mov ecx, dword [edi + 0x4c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x190], ecx
xor ecx, ecx
mov dword [esp + 0x2c], eax
mov edx, 1
push eax
lea eax, [esp + 0x184]
mov word [esp + 0x1a0], dx
mov dword [esp + 0x1a4], ecx
mov dword [esp + 0x1a8], ecx
call fcn.1004c8c0
mov edx, dword [esp + 0x1a0]
mov eax, dword [esp + 0x17c]
and edx, 0xbf01
or edx, 1
add esp, 4
mov word [esp + 0x19c], dx
mov dword [esp + 0x1ac], 0
test byte [eax + 3], 8
je 0x10052658
mov ecx, dword [ebx - 4]
mov dword [esp + 0x1b0], ecx
mov edx, dword [esp + 0x1c]
push edx
mov edx, dword [eax + 0xc]
lea ecx, [esp + 0x17c]
push esi
push ecx
call edx
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp byte [eax + 0x1e], 0
jne 0x10055bc7
mov eax, dword [esp + 0x17c]
test eax, eax
je 0x100526a2
mov ecx, dword [ebx + 4]
push ecx
push eax
call fcn.1004f140
mov edx, dword [esp + 0x184]
add esp, 8
mov dword [ebx + 0x10], edx
mov byte [ebx + 1], 0xf9
cmp dword [esp + 0x1ac], 0
je 0x100526dd
push 1
lea eax, [esp + 0x184]
call fcn.1004ce30
add esp, 4
push eax
mov eax, dword [esp + 0x1c]
push 0x100f06f8
lea esi, [edi + 0x74]
call fcn.100380b0
mov eax, dword [esp + 0x1b4]
add esp, 8
mov dword [esp + 0x14], eax
movzx ecx, byte [esp + 0x54]
lea eax, [esp + 0x180]
call fcn.1004bee0
mov esi, dword [esp + 0x2c]
lea ecx, [esp + 0x180]
push ecx
mov eax, esi
call fcn.1004c8c0
add esp, 4
mov ecx, esi
call fcn.1004c7c0
test eax, eax
jne 0x10051f9d
jmp case.0x10051d33.12
mov edx, dword [esp + 0x50]
mov al, byte [edx + 0x1c]
or al, byte [ecx + 0x1c]
test al, 1
je 0x10052734
mov esi, dword [esp + 0x2c]
call fcn.1004c640
jmp case.0x10051d33.12
mov eax, dword [esp + 0x50]
call fcn.1004c3a0
mov edi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xac], edx
call fcn.1004c3a0
mov ecx, eax
movzx eax, byte [ebx]
sub eax, 0x50
je 0x10052793
dec eax
je 0x10052788
mov edx, dword [esp + 0xac]
dec eax
mov eax, edi
je 0x10052778
call fcn.100d0110
mov edi, eax
mov dword [esp + 0xac], edx
jmp 0x1005279c
call fcn.100d0040
mov edi, eax
mov dword [esp + 0xac], edx
jmp 0x1005279c
or edi, ecx
or dword [esp + 0xac], edx
jmp 0x1005279c
and edi, ecx
and dword [esp + 0xac], edx
mov dx, word [esi + 0x1c]
mov ecx, dword [esp + 0xac]
mov eax, 0xbf04
and dx, ax
or dx, 4
mov dword [esi], edi
mov dword [esi + 4], ecx
mov word [esi + 0x1c], dx
jmp case.0x10051d33.12
mov esi, dword [esp + 0x20]
call fcn.1004c530
mov eax, dword [ebx + 8]
cdq
add dword [esi], eax
adc dword [esi + 4], edx
jmp case.0x10051d33.12
mov edi, dword [esp + 0x20]
call fcn.10051980
test byte [edi + 0x1c], 8
je 0x100527ee
mov esi, edi
call fcn.1004c4b0
movzx eax, word [edi + 0x1c]
test al, 4
jne 0x1005280b
mov ebx, dword [ebx + 8]
test ebx, ebx
je 0x10055bdc
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
and eax, 0xbf04
or eax, 4
mov word [edi + 0x1c], ax
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 4
je case.0x10051d33.12
mov esi, dword [esp + 0x20]
call fcn.1004c560
jmp case.0x10051d33.12
movzx edx, word [ecx + 0x1c]
test dl, 1
jne case.0x10051d33.12
mov eax, edx
shr eax, 3
and eax, 2
or eax, edx
mov word [ecx + 0x1c], ax
test al, 2
jne 0x10052867
test al, 0xc
je 0x10052867
movzx edi, byte [esp + 0x54]
mov esi, dword [esp + 0x20]
call fcn.1004c150
mov ecx, esi
mov esi, dword [esp + 0x20]
mov edx, 0xfff3
and word [ecx + 0x1c], dx
movzx ecx, word [ecx + 0x1c]
test ecx, 0x4000
je 0x10052897
call fcn.1004c0a0
mov dword [esp + 0x14], eax
mov eax, 0xbfe3
and word [esi + 0x1c], ax
jmp case.0x10051d33.12
mov eax, 0xbfe3
and word [esi + 0x1c], ax
mov dword [esp + 0x14], 0
jmp case.0x10051d33.12
movzx eax, word [ecx + 0x1c]
test al, 1
jne case.0x10051d33.12
test al, 0x10
jne 0x100528ee
test al, 2
jne 0x100528d5
test al, 0xc
je 0x100528d5
movzx edi, byte [esp + 0x54]
mov esi, dword [esp + 0x20]
call fcn.1004c150
mov ecx, esi
mov dx, word [ecx + 0x1c]
mov eax, 0xbf10
and dx, ax
or dx, 0x10
mov word [ecx + 0x1c], dx
jmp case.0x10051d33.12
and eax, 0xff10
mov word [ecx + 0x1c], ax
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 0xd
jne case.0x10051d33.12
mov esi, dword [esp + 0x20]
call fcn.1004c590
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 1
jne case.0x10051d33.12
mov esi, dword [esp + 0x20]
call fcn.1004c530
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 1
jne case.0x10051d33.12
mov esi, dword [esp + 0x20]
call fcn.1004c560
jmp case.0x10051d33.12
mov edx, dword [esp + 0x6c]
mov al, byte [edx + 0x1c]
or al, byte [ecx + 0x1c]
test al, 1
mov al, byte [ebx + 3]
je 0x10052997
test al, 0x10
je 0x10052982
mov ebx, dword [ebx + 8]
mov edx, dword [edi + 0x4c]
lea ecx, [ebx + ebx*4]
lea eax, [edx + ecx*8]
mov cx, word [eax + 0x1c]
mov edx, 0xbf01
and cx, dx
or cx, 1
mov dword [esp + 0x2c], eax
mov word [eax + 0x1c], cx
jmp case.0x10051d33.12
test al, 8
je case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
and al, 0x67
mov byte [esp + 0x37], al
je 0x100529d3
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
push esi
call fcn.10051a40
mov al, byte [esp + 0x3b]
mov ecx, dword [esp + 0x70]
add esp, 4
push esi
call fcn.10051a40
mov eax, dword [esp + 0x1c]
add esp, 4
cmp byte [eax + 0x1e], 0
jne 0x1005213d
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
test word [ecx + 0x1c], dx
je 0x100529e7
mov esi, dword [esp + 0x20]
call fcn.1004c0a0
mov ecx, dword [esp + 0x6c]
mov eax, 0x4000
test word [ecx + 0x1c], ax
je 0x100529fd
mov esi, ecx
call fcn.1004c0a0
mov edx, dword [esp + 0x20]
mov eax, dword [ebx + 0x10]
mov ecx, dword [esp + 0x6c]
push edx
call fcn.1004cab0
movzx ecx, byte [ebx]
add ecx, 0xffffffb7
add esp, 4
cmp ecx, 4
ja case.default.0x10052a1c
jmp dword [ecx*4 + 0x10055f88]
and byte [ecx + 0x3068100d], dl
jne 0x10052a36
add bh, bh
adc eax, sym.imp.KERNEL32.dll_Sleep
adc byte [ebx - 0x405f5e30], cl
adc byte [eax], dl
mov eax, dword [ebp + 0xc]
mov dword [ebp - 4], eax
mov eax, 0xffffffff
add eax, dword [ebp + 0xc]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
test eax, eax
jbe 0x10052b76
mov byte [ebp - 0xc], 0
movzx eax, byte [ebp - 0xc]
mov byte [ebp - 0xb], al
mov eax, dword [ebp - 8]
movzx edx, byte [ebp - 0xb]
mov dh, 0x55
cmc
mov dh, 0x55
cmc
mov byte [eax], dl
mov eax, 1
add eax, dword [ebp - 8]
mov dword [ebp - 8], eax
jmp 0x10052b3d
mov eax, dword [ebp + 8]
leave
ret
test byte [ecx + 0x1c], 1
je 0x10052ba5
mov edi, 2
jmp 0x10052bbb
mov eax, dword [esp + 0x20]
call fcn.1004c3a0
or eax, edx
je 0x10052bb9
mov edi, 1
jmp 0x10052bbb
xor edi, edi
mov eax, dword [esp + 0x50]
test byte [eax + 0x1c], 1
je 0x10052bcc
mov eax, 2
jmp 0x10052bde
call fcn.1004c3a0
or eax, edx
je 0x10052bdc
mov eax, 1
jmp 0x10052bde
xor eax, eax
cmp byte [ebx], 0x43
jne 0x10052bf0
lea ecx, [eax + edi*2]
movzx eax, byte [edi + ecx + 0x100e854c]
jmp 0x10052bfb
lea edx, [eax + edi*2]
movzx eax, byte [edi + edx + 0x100e8614]
cmp eax, 2
jne 0x10054f25
mov ax, word [esi + 0x1c]
mov ecx, 0xbf01
and ax, cx
or ax, 1
mov word [esi + 0x1c], ax
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 1
mov ebx, dword [ebx + 8]
mov eax, dword [edi + 0x4c]
lea edx, [ebx + ebx*4]
lea esi, [eax + edx*8]
mov dword [esp + 0x2c], esi
je 0x10052c3d
call fcn.1004c640
jmp case.0x10051d33.12
mov eax, dword [esp + 0x20]
call fcn.1004c3a0
or eax, edx
jne 0x10052c5f
mov eax, 1
cdq
push edx
push eax
call fcn.1004c670
add esp, 8
jmp case.0x10051d33.12
xor eax, eax
cdq
push edx
push eax
call fcn.1004c670
add esp, 8
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 1
mov ebx, dword [ebx + 8]
mov eax, dword [edi + 0x4c]
lea edx, [ebx + ebx*4]
lea esi, [eax + edx*8]
mov dword [esp + 0x2c], esi
je 0x10052c91
call fcn.1004c640
jmp case.0x10051d33.12
mov eax, dword [esp + 0x20]
call fcn.1004c3a0
not edx
not eax
push edx
push eax
call fcn.1004c670
add esp, 8
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 1
je 0x10052cb8
mov eax, dword [ebx + 0xc]
jmp 0x10052ce3
mov eax, dword [esp + 0x20]
call fcn.1004c430
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x10052cd3
mov eax, 1
jmp 0x10052cd5
xor eax, eax
cmp byte [ebx], 0x44
jne 0x10052ce3
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
test eax, eax
je case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov eax, dword [ebx + 0xc]
jmp 0x10052d00
test byte [ecx + 0x1c], 1
jne 0x10052d13
dec eax
add ecx, 0x28
test eax, eax
jg 0x10052d00
jmp 0x10051d79
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp 0x10051d79
test byte [ecx + 0x1c], 1
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 4]
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], eax
mov dword [esp + 0x10c], eax
mov eax, dword [edi + 0x4c]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*8]
mov ax, word [ecx + 0x1c]
mov esi, 0xbf01
and ax, si
or ax, 1
mov word [ecx + 0x1c], ax
mov dword [esp + 0x74], ecx
mov ecx, dword [edi + 0x30]
mov ecx, dword [ecx + edx*4]
xor eax, eax
mov dword [esp + 0x58], ecx
cmp dword [ecx], eax
je 0x10052e5a
mov edi, ecx
call fcn.1004f410
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov esi, edi
mov eax, dword [esi]
xor ecx, ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x30], eax
cmp byte [esi + 0x14], cl
je 0x10052df7
mov edx, dword [esi + 0x44]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x38], edx
jmp 0x10052e76
mov edx, dword [esi + 0x5c]
mov ecx, dword [esp + 0x4c]
cmp edx, dword [ecx + 0x50]
jne 0x10052e1a
mov edx, dword [esi + 0x60]
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x78], edx
mov edx, dword [esi + 0x44]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x38], edx
jmp 0x10052e76
cmp byte [esi + 0x19], 0
je 0x10052e44
lea ecx, [esp + 0x240]
push ecx
call fcn.10045680
mov edx, dword [esp + 0x244]
mov dword [esp + 0x7c], edx
mov edx, dword [esi + 0x44]
add esp, 4
mov dword [esp + 0x38], edx
jmp 0x10052e76
lea ecx, [esp + 0x78]
push ecx
call fcn.100456e0
mov edx, dword [esi + 0x44]
add esp, 4
mov dword [esp + 0x38], edx
jmp 0x10052e76
mov edx, dword [ecx + 0x2c]
mov dword [esp + 0x78], edx
mov edx, dword [ecx + 0x30]
mov dword [ecx + 0x5c], eax
mov ecx, dword [ecx + 0x44]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], eax
cmp dword [esp + 0x78], 0
je case.0x10051d33.12
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x18]
cmp edx, dword [eax + 0x50]
jg 0x10051f9d
mov eax, dword [esp + 0x58]
mov esi, dword [eax + 0x5c]
mov edx, dword [esp + 0x4c]
mov ecx, dword [eax + 0x64]
mov dword [esp + 0x24], ecx
cmp esi, dword [edx + 0x50]
jne 0x10052eb5
mov ecx, dword [eax + 0x68]
mov dword [esp + 0x44], ecx
jmp 0x10053074
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x5c]
lea ecx, [ecx + esi*4]
mov dword [eax + 0x68], ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x78]
mov dword [eax + 0x60], ecx
mov edx, dword [edx + 0x50]
mov dword [esp + 0x48], 0
mov dword [eax + 0x5c], edx
test edi, edi
jne 0x10052f2b
cmp byte [eax + 0x19], 0
je 0x10052ef6
mov esi, dword [esp + 0x30]
lea eax, [esp + 0x48]
push eax
call fcn.10045cd0
jmp 0x10052f04
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0x48]
push ecx
call fcn.10045d60
mov edx, dword [esp + 0x4c]
add esp, 4
mov edi, eax
cmp edx, dword [esp + 0x78]
jl 0x10052f20
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], edi
mov dword [eax + 0x6c], edi
jmp 0x10052f2b
mov ecx, dword [esp + 0x58]
mov dword [ecx + 0x6c], 0
mov al, byte [edi]
cmp al, 0x80
jae 0x10052f3f
movzx edx, al
mov dword [esp + 0x7c], edx
mov eax, 1
jmp 0x10052f4d
lea esi, [esp + 0x7c]
mov ecx, edi
call fcn.1003a8c0
movzx eax, al
cmp dword [esp + 0x5c], 0
movzx esi, al
jne 0x10052fa9
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x7c]
jge 0x10052fa9
mov edx, dword [esp + 0x58]
xor ecx, ecx
mov word [esp + 0x104], cx
mov dword [esp + 0xf8], ecx
movzx eax, byte [edx + 0x19]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x30]
push eax
push ecx
push 0
push edx
lea edi, [esp + 0xf8]
call fcn.1004cd40
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
mov edi, dword [esp + 0xfc]
mov eax, dword [esp + 0x7c]
add eax, edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x38]
add edi, esi
test eax, eax
jle 0x1005302f
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
sub ecx, esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], eax
nop
cmp edi, dword [esp + 0x48]
jae 0x1005301f
mov edx, dword [esp + 0x7c]
mov dword [ecx + esi], edx
mov al, byte [edi]
cmp al, 0x80
jae 0x10052fff
movzx eax, al
mov dword [esi], eax
mov eax, 1
movzx edx, al
mov eax, dword [esi]
add edi, edx
call fcn.1004f590
add dword [esp + 0x7c], eax
jmp 0x10053026
mov ecx, edi
call fcn.1003a8c0
mov ecx, dword [esp + 0x14]
movzx eax, al
movzx edx, al
mov eax, dword [esi]
add edi, edx
call fcn.1004f590
add dword [esp + 0x7c], eax
jmp 0x10053026
mov dword [ecx + esi], 0
add esi, 4
dec dword [esp + 0x38]
jne 0x10052fd0
lea eax, [esp + 0xe8]
push eax
call fcn.1004c2d0
mov ecx, 1
mov word [esp + 0x108], cx
mov ecx, dword [esp + 0x4c]
add esp, 4
cmp edi, ecx
ja 0x1005319f
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
cmp eax, edx
jg 0x1005319f
cmp edi, ecx
jne 0x10053074
cmp eax, edx
jne 0x1005319f
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
cmp dword [edx + edi*4], 0
je 0x1005313d
cmp dword [esp + 0x5c], 0
je 0x100530bd
mov esi, dword [esp + 0x74]
call fcn.1004c270
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + edi*4]
mov edx, dword [esp + 0x44]
push ecx
mov ecx, dword [edx + edi*4]
add ecx, dword [esp + 0x60]
call fcn.1004f660
mov cl, byte [esp + 0x58]
add esp, 4
mov byte [esi + 0x1f], cl
jmp 0x10053159
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov eax, dword [eax + edi*4]
call fcn.1004f590
mov ecx, dword [esp + 0x74]
mov esi, eax
push ecx
lea eax, [esp + 0xec]
call fcn.1004c8c0
mov edx, dword [esp + 0x5c]
movzx eax, byte [edx + 0x19]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + edi*4]
add esp, 4
push eax
mov eax, dword [esp + 0x34]
push esi
push edx
push eax
lea edi, [esp + 0xf8]
call fcn.1004cd40
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx + edx*4]
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0xfc]
push eax
call fcn.1004f660
mov cl, byte [esp + 0x58]
add esp, 4
mov byte [esi + 0x1f], cl
jmp 0x10053159
cmp byte [ebx + 1], 0xf8
mov esi, dword [esp + 0x74]
jne 0x10053159
mov edx, dword [ebx + 0x10]
push 0x800
push edx
push esi
call fcn.1004c7f0
add esp, 0xc
cmp dword [esp + 0x10c], 0
je 0x1005318f
mov ax, word [esi + 0x1c]
mov ecx, 0xe7ff
and ax, cx
mov edx, 0x200
or ax, dx
mov word [esi + 0x1c], ax
mov eax, dword [esp + 0xfc]
mov dword [esi + 0x14], eax
mov ecx, dword [esp + 0x10c]
mov dword [esi + 0x24], ecx
mov eax, esi
call fcn.1004c040
mov dword [esp + 0x14], eax
jmp case.0x10051d33.12
mov dword [esp + 0x14], 0xb
jmp case.0x10051d33.12
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x4c]
mov ebx, dword [ebx + 8]
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov dword [esp + 0x1c], edx
lea edx, [ebx + ebx*4]
lea eax, [edi + edx*8 - 0x28]
mov dword [esp + 0x38], eax
mov esi, edi
cmp edi, eax
ja case.0x10051d33.12
xor ebx, ebx
mov eax, 0x4000
test word [edi + ebx + 0x1c], ax
je 0x100531ea
call fcn.1004c0a0
mov ecx, dword [esp + 0x54]
mov eax, 0x66666667
imul ebx
sar edx, 4
mov eax, edx
shr eax, 0x1f
push ecx
mov ecx, dword [esp + 0x20]
add eax, edx
mov al, byte [eax + ecx]
mov ecx, esi
call fcn.10051a40
add esi, 0x28
add esp, 4
add ebx, 0x28
cmp esi, dword [esp + 0x38]
jbe 0x100531d9
jmp case.0x10051d33.12
mov ecx, dword [edi + 0x4c]
mov edx, dword [ebx + 0x10]
xor eax, eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x44], eax
mov eax, dword [ebx + 4]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
mov eax, dword [ebx + 8]
movzx ecx, byte [edi + 0x7f]
mov dword [esp + 0x1c], edx
lea edx, [eax + eax*4]
lea eax, [esi + edx*8 - 0x28]
mov dword [esp + 0x24], esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], ecx
cmp esi, eax
ja 0x10053339
mov eax, 0xffffffe8
sub eax, esi
mov dword [esp + 0x48], eax
lea ebx, [ebx]
cmp dword [esp + 0x1c], 0
je 0x100532b6
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
lea ecx, [esi + eax + 0x18]
push edx
mov eax, 0x66666667
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x20]
mov al, byte [ecx + edx]
mov ecx, esi
call fcn.10051a40
add esp, 4
mov eax, 0x4000
test word [esi + 0x1c], ax
je 0x100532cc
cmp dword [esi + 0x18], 0
jle 0x100532cc
call fcn.1004c0a0
mov ecx, dword [esp + 0x38]
push ecx
mov edx, esi
call fcn.1004f4b0
add esp, 4
mov dword [esp + 0x74], eax
call fcn.1004f590
mov dword [esp + 0x58], eax
cdq
add dword [esp + 0xc8], eax
push 0
adc dword [esp + 0xd0], edx
mov edx, dword [esp + 0x78]
push edx
call fcn.1003a920
add dword [esp + 0x64], eax
mov eax, 0x4000
add esp, 8
test word [esi + 0x1c], ax
je 0x1005331d
mov ecx, dword [esi]
add dword [esp + 0x44], ecx
jmp 0x1005332c
cmp dword [esp + 0x58], 0
je 0x1005332c
mov dword [esp + 0x44], 0
add esi, 0x28
cmp esi, dword [esp + 0x30]
jbe 0x10053280
mov eax, dword [esp + 0x5c]
cdq
push edx
push eax
call fcn.1003a920
mov esi, eax
mov eax, dword [esp + 0x64]
add eax, esi
mov dword [esp + 0x64], eax
cdq
push edx
push eax
call fcn.1003a920
add esp, 0x10
cmp esi, eax
jge 0x10053364
inc dword [esp + 0x5c]
mov eax, dword [esp + 0x44]
cdq
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x48], edx
cdq
mov esi, eax
sub esi, dword [esp + 0x1c]
mov ecx, edx
sbb ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
add esi, dword [esp + 0xc8]
mov eax, dword [edx + 0x50]
adc ecx, dword [esp + 0xcc]
cdq
cmp ecx, edx
jg 0x10051f9d
jl 0x100533aa
cmp esi, eax
ja 0x10051f9d
mov ebx, dword [ebx + 0xc]
mov ecx, dword [edi + 0x4c]
push 0
lea eax, [ebx + ebx*4]
lea eax, [ecx + eax*8]
push esi
push eax
mov dword [esp + 0x38], eax
call fcn.1004bf00
add esp, 0xc
test eax, eax
jne 0x1005213d
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x5c]
mov ecx, dword [edx + 0x14]
mov dword [esp + 0x1c], ecx
cmp eax, 0x80
jae 0x100533ed
mov byte [ecx], al
mov eax, 1
jmp 0x100533f2
call fcn.1003a710
mov ebx, dword [esp + 0x24]
movzx edi, al
cmp ebx, dword [esp + 0x30]
ja 0x1005346e
nop
mov eax, dword [esp + 0x38]
push eax
mov edx, ebx
call fcn.1004f4b0
add esp, 4
cmp eax, 0x80
jae 0x10053424
mov ecx, dword [esp + 0x1c]
mov byte [edi + ecx], al
mov eax, 1
jmp 0x10053430
mov edx, dword [esp + 0x1c]
lea ecx, [edi + edx]
call fcn.1003a710
movzx eax, al
add ebx, 0x28
add edi, eax
cmp ebx, dword [esp + 0x30]
jbe 0x10053400
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x30]
ja 0x1005346e
mov edx, dword [esp + 0x1c]
mov ecx, esi
sub ecx, edi
push ecx
lea eax, [edi + edx]
push eax
mov eax, dword [esp + 0x40]
mov ecx, ebx
call fcn.1004f5b0
add ebx, 0x28
add esp, 8
add edi, eax
cmp ebx, dword [esp + 0x30]
jbe 0x10053448
mov eax, dword [esp + 0x2c]
mov ecx, 0x410
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x44]
mov dword [eax + 0x18], esi
mov dword [eax + 0x20], 0
test ecx, ecx
je 0x10053498
mov edx, 0x4410
mov dword [eax], ecx
mov word [eax + 0x1c], dx
mov byte [eax + 0x1f], 1
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov edx, dword [ecx + eax*4]
mov esi, dword [edx]
xor eax, eax
cmp esi, eax
je 0x100534c8
lea eax, [esp + 0xe0]
push eax
call fcn.10049fd0
add esp, 4
mov dword [esp + 0x14], eax
jmp 0x100534d6
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0xe0]
mov ecx, 4
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0xe4]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp case.0x10051d33.12
cmp byte [edx + 0x1c], 0
je 0x1005350e
cmp dword [edx + 0x90], 1
jle case.0x10051d33.12
cmp dword [edi + 0xd4], 0
mov ebx, dword [ebx + 4]
mov ecx, dword [edx + 8]
lea eax, [ebx + ebx*2]
mov eax, dword [ecx + eax*8 + 4]
jne 0x1005353e
inc dword [edx + 0x1dc]
mov ecx, dword [edx + 0x1dc]
mov edx, dword [edx + 0x1d8]
add edx, ecx
mov dword [edi + 0xd4], edx
mov ecx, dword [edi + 0xd4]
push ecx
call fcn.10045200
add esp, 4
mov dword [esp + 0x14], eax
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
test eax, eax
jne 0x1005360a
cmp dword [edx + 0x94], eax
jle 0x10053595
push str.cannot_open_savepoint___SQL_statements_in_progress
mov eax, dword [esp + 0x1c]
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 4
mov dword [esp + 0x14], 5
jmp case.0x10051d33.12
call fcn.10039d80
mov esi, dword [esp + 0x18]
mov edi, eax
lea ecx, [edi + 9]
call fcn.10037ea0
mov esi, eax
test esi, esi
je case.0x10051d33.12
mov edx, dword [esp + 0x1c]
inc edi
push edi
lea eax, [esi + 8]
push edx
push eax
mov dword [esi], eax
call fcn.100b6420
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp byte [eax + 0x1c], 0
je 0x100535f0
mov ecx, dword [eax + 0x1d4]
mov byte [eax + 0x1c], 0
mov byte [eax + 0x1e0], 1
mov dword [esi + 4], ecx
mov dword [eax + 0x1d4], esi
jmp case.0x10051d33.12
mov ecx, dword [eax + 0x1d4]
inc dword [eax + 0x1d8]
mov dword [esi + 4], ecx
mov dword [eax + 0x1d4], esi
jmp case.0x10051d33.12
mov ebx, dword [edx + 0x1d4]
xor esi, esi
test ebx, ebx
je 0x1005362f
mov edx, ecx
mov ecx, dword [ebx]
call fcn.10039f90
test eax, eax
je 0x10053651
mov ebx, dword [ebx + 4]
mov ecx, dword [esp + 0x1c]
inc esi
test ebx, ebx
jne 0x10053616
mov eax, dword [esp + 0x18]
push ecx
push str.no_such_savepoint:__s
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 8
mov dword [esp + 0x14], 1
jmp case.0x10051d33.12
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x18]
xor ecx, ecx
cmp dword [esi + 0x94], ecx
jg 0x100537a6
mov eax, dword [esp + 0x30]
cmp eax, 2
jne 0x1005367d
cmp dword [esi + 0x90], 1
jg 0x100537ad
cmp dword [ebx + 4], ecx
jne 0x100536c1
cmp byte [esi + 0x1e0], cl
je 0x100536c1
mov dword [esp + 0x24], 1
cmp eax, 1
jne 0x100536c5
push edi
mov byte [esi + 0x1c], al
call fcn.1004eda0
add esp, 4
cmp eax, 5
je 0x10055be9
mov byte [esi + 0x1e0], 0
mov edx, dword [edi + 0x64]
mov dword [esp + 0x14], edx
mov edi, esi
jmp 0x10053738
mov dword [esp + 0x24], ecx
mov edi, dword [esi + 0x1d8]
sub edi, dword [esp + 0x38]
mov dword [esp + 0x1c], ecx
dec edi
cmp dword [esi + 4], ecx
jle 0x10053715
mov eax, dword [esp + 0x18]
xor esi, esi
mov ecx, dword [esp + 0x30]
mov edx, dword [eax + 8]
mov eax, dword [esi + edx + 4]
push edi
push ecx
call fcn.10045260
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
inc ecx
add esi, 0x18
mov dword [esp + 0x1c], ecx
cmp ecx, dword [eax + 4]
jl 0x100536df
cmp dword [esp + 0x30], 2
mov edi, dword [esp + 0x18]
jne 0x10053738
test byte [edi + 0xc], 0x10
je 0x10053738
mov eax, edi
call fcn.1004fec0
push 0
push edi
call fcn.100616f0
add esp, 8
cmp dword [edi + 0x1d4], ebx
je 0x1005376a
or esi, 0xffffffff
mov eax, dword [edi + 0x1d4]
mov ecx, dword [eax + 4]
push eax
push edi
mov dword [edi + 0x1d4], ecx
call fcn.10037ca0
add dword [edi + 0x1d8], esi
add esp, 8
cmp dword [edi + 0x1d4], ebx
jne 0x10053743
cmp dword [esp + 0x30], 1
jne case.0x10051d33.12
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 4]
push ebx
push eax
mov dword [eax + 0x1d4], edx
call fcn.10037ca0
add esp, 8
cmp dword [esp + 0x24], 0
jne case.0x10051d33.12
mov eax, dword [esp + 0x18]
dec dword [eax + 0x1d8]
jmp case.0x10051d33.12
cmp dword [esp + 0x30], 2
jne 0x100537b4
mov eax, str.rollback
jmp 0x100537b9
mov eax, str.release
push eax
mov eax, dword [esp + 0x1c]
push str.cannot__s_savepoint___SQL_statements_in_progress
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 8
mov dword [esp + 0x14], 5
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ebx, dword [ebx + 8]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x10053819
cmp byte [edx + 0x1c], 0
jne 0x10053819
test ebx, ebx
je 0x10053806
cmp dword [edx + 0x90], 1
jle 0x10053819
push str.cannot_rollback_transaction___SQL_statements_in_progress
jmp 0x10053579
cmp dword [edx + 0x94], 1
jle 0x10053819
push str.cannot_commit_transaction___SQL_statements_in_progress
jmp 0x10053579
movzx ecx, byte [edx + 0x1c]
cmp eax, ecx
jne 0x10055c01
test eax, eax
jne 0x10053830
mov eax, str.cannot_start_a_transaction_within_a_transaction
jmp 0x1005383e
mov eax, str.cannot_rollback___no_transaction_is_active
test ebx, ebx
jne 0x1005383e
mov eax, str.cannot_commit___no_transaction_is_active
push eax
mov eax, dword [esp + 0x1c]
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 4
mov dword [esp + 0x14], 1
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edx + 8]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8 + 4]
test eax, eax
je case.0x10051d33.12
mov edx, dword [ebx + 8]
push edx
push eax
call fcn.10044360
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, 5
je 0x10055c5f
test eax, eax
je case.0x10051d33.12
cmp eax, 8
jne 0x10055c8f
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ebx, dword [ebx + 0xc]
test eax, eax
jns 0x100538b3
or ecx, 0xffffffff
sub ecx, eax
mov eax, ecx
neg ebx
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x120]
push edx
mov edx, dword [ecx + 8]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*8 + 4]
inc ebx
push ebx
call fcn.10049d70
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x128]
cdq
mov dword [esi], eax
mov ax, word [esi + 0x1c]
mov ecx, 0xbf04
and ax, cx
add esp, 8
or ax, 4
mov dword [esi + 4], edx
mov word [esi + 0x1c], ax
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov esi, dword [esp + 0x6c]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
lea edi, [ecx + edx*8]
call fcn.1004c530
mov edx, dword [esi]
mov eax, dword [ebx + 8]
inc eax
push edx
push eax
mov eax, dword [edi + 4]
call fcn.10049ed0
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 8]
add esp, 8
test eax, eax
jne 0x10053945
mov ecx, dword [edi + 0x14]
mov edx, dword [esi]
mov eax, dword [esp + 0x18]
mov dword [ecx], edx
or dword [eax + 0xc], 0x10
jmp 0x10053952
cmp eax, 1
jne 0x10053952
mov eax, dword [edi + 0x14]
mov cl, byte [esi]
mov byte [eax + 0x38], cl
cmp dword [ebx + 4], 1
jne case.0x10051d33.12
mov eax, dword [esp + 0x18]
call fcn.1004fec0
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edx + 8]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8 + 4]
xor ecx, ecx
cmp eax, ecx
je 0x10053a0c
lea edx, [esp + 0xb4]
push edx
push 1
call fcn.10049d70
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
mov eax, dword [esp + 0xb4]
cmp eax, dword [ebx + 8]
je case.0x10051d33.12
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx + 0x74]
mov esi, dword [esp + 0x18]
push edx
push esi
call fcn.10037ca0
push esi
mov edi, str.database_schema_has_changed
call fcn.10038020
mov ecx, dword [esp + 0x58]
mov dword [ecx + 0x74], eax
mov ebx, dword [ebx + 4]
mov eax, dword [esi + 8]
lea edx, [ebx + ebx*2]
mov ecx, dword [eax + edx*8 + 0x14]
mov edx, dword [esp + 0xc0]
add esp, 0xc
cmp dword [ecx], edx
je 0x100539f8
push ebx
push esi
call fcn.100616f0
add esp, 8
mov eax, esi
call fcn.1004fec0
mov dword [esp + 0x14], 0x11
jmp case.0x10051d33.12
mov dword [esp + 0x14], ecx
mov dword [esp + 0xb4], ecx
jmp 0x1005399f
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov edx, dword [edx + 8]
mov dword [esp + 0x44], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x1c], ecx
lea ecx, [eax + eax*2]
xor esi, esi
cmp byte [esp + 0x37], 0xa
lea ecx, [edx + ecx*8]
mov edx, dword [ecx + 4]
mov dword [esp + 0x30], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x74], edx
jne 0x10053a67
mov ecx, dword [ecx + 0x14]
mov cl, byte [ecx + 0x38]
mov dword [esp + 0x24], 1
cmp cl, byte [edi + 0x7f]
jae 0x10053a6b
mov byte [edi + 0x7f], cl
jmp 0x10053a6b
mov dword [esp + 0x24], esi
cmp byte [ebx + 3], 0
je 0x10053a9e
mov eax, dword [esp + 0x1c]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea esi, [eax + edx*8]
mov dword [esp + 0x50], esi
call fcn.1004c530
mov esi, dword [esi]
mov dword [esp + 0x1c], esi
cmp esi, 2
jl 0x10053b97
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x30]
mov cl, byte [ebx + 1]
cmp cl, 0xfa
jne 0x10053ac2
mov ecx, dword [edi]
mov edx, dword [ecx + 8]
mov ecx, dword [edx + 0x14]
mov esi, dword [ebx + 0x10]
mov dl, byte [ecx + 0x39]
mov dword [esp + 0x38], esi
mov byte [esi + 4], dl
movzx esi, word [esi + 6]
inc esi
jmp 0x10053aca
cmp cl, 0xf2
jne 0x10053aca
mov esi, dword [ebx + 0x10]
push 1
push eax
mov eax, dword [esp + 0x4c]
push esi
push eax
mov eax, edi
call fcn.100518b0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x1005213d
mov ecx, dword [esi]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x80]
push ecx
mov byte [esi + 0x14], 1
call fcn.100453d0
mov edx, dword [esp + 0x48]
add esp, 0x10
mov dword [esp + 0x14], eax
mov dword [esi + 0x40], edx
test eax, eax
je 0x10053b52
cmp eax, 5
je 0x10055c73
cmp eax, 0x10
jne 0x10055c8f
cmp byte [ebx + 1], 0xfa
mov dword [esi], 0
setne al
test al, al
mov byte [esi + 0x18], al
sete al
mov byte [esi + 0x19], al
mov dword [esp + 0x14], 0
jmp case.0x10051d33.12
mov eax, dword [esi]
call fcn.10049f60
test al, 0xf0
jne 0x10053b97
mov ecx, eax
and ecx, 7
cmp ecx, 5
je 0x10053b6c
cmp ecx, 2
jne 0x10053b97
mov cl, al
shr eax, 1
and cl, 1
and al, 1
mov byte [esi + 0x18], cl
mov byte [esi + 0x19], al
test cl, cl
je 0x10053b85
cmp byte [ebx + 1], 0xfa
je 0x10053b97
test al, al
je case.0x10051d33.12
cmp byte [ebx + 1], 0xfa
je case.0x10051d33.12
mov dword [esp + 0x14], 0xb
jmp 0x10055c8f
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 4]
push 1
push 0xffffffffffffffff
push edx
push eax
mov eax, edi
call fcn.100518b0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x1005213d
mov edx, dword [esp + 0x18]
lea eax, [esi + 0x28]
push eax
push 0x41e
push 0x1f4
push 1
xor ecx, ecx
mov byte [esi + 0x14], 1
call fcn.100884a0
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10053c91
mov eax, dword [esi + 0x28]
push 1
push eax
call fcn.10044360
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10053c91
cmp dword [ebx + 0x10], eax
je 0x10053c75
mov eax, dword [esi + 0x28]
lea ecx, [esp + 0x110]
push 2
push ecx
call fcn.10049870
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10053c62
mov edx, dword [esi]
mov eax, dword [ebx + 0x10]
mov ecx, dword [esp + 0x110]
push edx
push eax
mov eax, dword [esi + 0x28]
push 1
push ecx
call fcn.100453d0
mov ebx, dword [ebx + 0x10]
mov dword [esi + 0x40], ebx
mov edx, dword [edi]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 8]
mov ecx, dword [eax + 0x14]
mov dl, byte [ecx + 0x39]
add esp, 0x10
mov byte [ebx + 4], dl
mov byte [esi + 0x18], 0
cmp byte [esi + 0x18], 0
sete cl
mov byte [esi + 0x19], cl
jmp case.0x10051d33.12
mov eax, dword [esi]
push eax
mov eax, dword [esi + 0x28]
push 0
push 1
push 1
call fcn.100453d0
add esp, 0x10
mov dword [esp + 0x14], eax
mov byte [esi + 0x18], 1
cmp byte [esi + 0x18], 0
sete cl
mov byte [esi + 0x19], cl
jmp case.0x10051d33.12
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 4]
push 0
push 0xffffffffffffffff
push edx
push eax
mov eax, edi
call fcn.100518b0
add esp, 0x10
test eax, eax
je 0x1005213d
mov word [eax + 0x14], 0x101
mov cl, byte [ebx + 8]
mov byte [eax + 0x16], cl
mov word [eax + 0x18], 1
jmp case.0x10051d33.12
mov edi, dword [esp + 0x4c]
mov ebx, dword [ebx + 4]
mov edx, dword [edi + 0x30]
mov esi, dword [edx + ebx*4]
call fcn.1004e480
mov eax, edi
mov ecx, dword [eax + 0x30]
mov dword [ecx + ebx*4], 0
jmp case.0x10051d33.12
mov edx, dword [ebx + 4]
mov eax, dword [edi + 0x30]
mov esi, dword [eax + edx*4]
mov ecx, dword [esi]
test ecx, ecx
je 0x10053fb1
cmp byte [esi + 0x18], 0
mov byte [esi + 0x14], 0
je 0x10053eb4
mov edi, dword [esp + 0x6c]
call fcn.10051980
mov eax, edi
call fcn.1004c3a0
mov dword [esp + 0x80], eax
mov byte [esi + 0x11], 0
movzx eax, word [edi + 0x1c]
mov dword [esp + 0x84], edx
test al, 4
jne 0x10053e62
test al, 8
jne 0x10053d58
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
cmp dword [esp + 0x80], 0
jne 0x10053e0f
mov eax, SysReAllocString
cmp dword [esp + 0x84], eax
jne 0x10053e0f
mov dword [esp + 0x174], eax
mov dword [esp + 0x170], 0
fild qword [esp + 0x170]
fcomp qword [edi + 8]
fnstsw ax
test ah, 0x41
je 0x10053da7
fldz
fcomp qword [edi + 8]
fnstsw ax
test ah, 5
jp 0x10053e0f
fldz
mov dword [esp + 0x70], 1
fcomp qword [edi + 8]
fnstsw ax
test ah, 0x41
mov eax, dword [esp + 0x30]
jne 0x10053dd6
cmp eax, 0x7b
je 0x10053dc9
cmp eax, 0x6d
jne 0x10053e02
mov eax, dword [esi]
lea edi, [esp + 0x70]
call fcn.10046110
jmp 0x10053deb
cmp eax, 0x46
je 0x10053de0
cmp eax, 0x37
jne 0x10053e02
mov eax, dword [esi]
lea edi, [esp + 0x70]
call fcn.10046140
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
cmp dword [esp + 0x70], 0
je case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov eax, dword [esp + 0x30]
cmp eax, 0x46
je 0x10053e41
cmp eax, 0x6d
je 0x10053e41
fild qword [esp + 0x80]
fcomp qword [edi + 8]
fnstsw ax
test ah, 0x41
jne 0x10053e62
or eax, 0xffffffff
add dword [esp + 0x80], eax
adc dword [esp + 0x84], eax
jmp 0x10053e62
fild qword [esp + 0x80]
fcomp qword [edi + 8]
fnstsw ax
test ah, 5
jp 0x10053e62
add dword [esp + 0x80], 1
adc dword [esp + 0x84], 0
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x80]
mov eax, dword [esi]
lea ecx, [esp + 0x70]
push ecx
push 0
push edx
push edi
push 0
push eax
call fcn.10046180
add esp, 0x18
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov eax, dword [esp + 0x70]
test eax, eax
jne 0x10053f33
mov ecx, dword [esp + 0x84]
mov byte [esi + 0x11], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], ecx
jmp 0x10053f33
mov ax, word [ebx + 0x10]
mov edx, dword [esi + 0x40]
mov word [esp + 0x1d4], ax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1d0], edx
cmp eax, 0x7b
je 0x10053ee4
cmp eax, 0x37
je 0x10053ee4
xor edx, edx
mov word [esp + 0x1d6], dx
jmp 0x10053ef1
mov eax, 8
mov word [esp + 0x1d6], ax
mov eax, dword [ebx + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea edx, [eax + edx*8]
lea eax, [esp + 0x70]
push eax
push 0
push 0
mov dword [esp + 0x1ec], edx
push 0
lea edx, [esp + 0x1e0]
push edx
push ecx
call fcn.10046180
add esp, 0x18
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov byte [esi + 0x11], al
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
xor edx, edx
mov byte [esi + 0x17], 0
mov dword [esi + 0x5c], edx
cmp ecx, 0x6d
je 0x10053f78
cmp ecx, 0x7b
je 0x10053f78
cmp eax, edx
jg 0x10053f69
jne 0x10053f55
cmp ecx, 0x46
je 0x10053f69
mov eax, dword [esi]
xor ecx, ecx
cmp byte [eax + 0x43], 1
setne cl
mov dword [esp + 0x70], ecx
jmp 0x10053df7
mov eax, dword [esi]
lea edx, [esp + 0x70]
push edx
push eax
call fcn.100467c0
jmp 0x10053f99
cmp eax, edx
jl 0x10053f8c
jne 0x10053f83
cmp ecx, 0x7b
je 0x10053f8c
mov dword [esp + 0x70], edx
jmp case.0x10051d33.12
mov edx, dword [esi]
lea ecx, [esp + 0x70]
push ecx
push edx
call fcn.10046630
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov byte [esi + 0x11], 0
jmp 0x10053df7
cmp byte [esi + 0x15], 0
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov esi, dword [ecx + eax*4]
cmp dword [esi], 0
je case.0x10051d33.12
mov eax, dword [esp + 0x50]
mov byte [esi + 0x14], 0
call fcn.1004c3a0
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], edx
mov byte [esi + 0x11], 0
mov byte [esi + 0x17], 1
jmp case.0x10051d33.12
mov edx, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov edi, dword [ecx + edx*4]
xor eax, eax
cmp dword [edi], eax
je 0x1005408a
mov eax, dword [esp + 0x6c]
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov ecx, dword [edi + 0x40]
push edx
push eax
push ecx
mov edx, 0x97
lea eax, [esp + 0x2ac]
call fcn.1004f890
mov esi, eax
add esp, 0xc
test esi, esi
je 0x1005213d
cmp byte [ebx], 0x80
jne 0x10054045
or word [esi + 6], 0x10
mov eax, dword [edi]
lea edx, [esp + 0x124]
push edx
push 0
push 0
push 0
push esi
push eax
call fcn.10046180
add esp, 0x18
mov dword [esp + 0x14], eax
call fcn.1004fa20
cmp dword [esp + 0x14], 0
jne case.0x10051d33.12
xor eax, eax
cmp dword [esp + 0x124], eax
mov byte [edi + 0x17], 0
sete al
mov dword [edi + 0x5c], 0
cmp byte [ebx], 0x80
jne 0x100559d1
test eax, eax
jmp 0x10053dfc
mov eax, dword [ebx + 0x10]
mov edx, dword [edi + 0x4c]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
lea esi, [edx + ecx*8]
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + eax*4]
mov ecx, dword [eax]
xor edx, edx
lea edi, [eax + 0x58]
mov dword [eax + 0x5c], edx
mov eax, dword [eax + 0x40]
mov dword [edi], edx
mov dword [esp + 0x1c], ecx
movzx ecx, word [eax + 6]
mov dword [esp + 0x38], eax
xor eax, eax
cmp ax, cx
jae 0x100540e8
movzx eax, dx
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x1c], 1
jne 0x10051d48
inc edx
cmp dx, cx
jb 0x100540d1
cmp dword [esp + 0x1c], 0
je case.0x10051d33.12
mov edx, dword [esp + 0x38]
inc ecx
mov eax, 0x20
mov dword [esp + 0x1c8], esi
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x1b8], edx
mov word [esp + 0x1bc], cx
mov word [esp + 0x1be], ax
call fcn.1004c530
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push edi
push 0
push 0
push 0
lea eax, [esp + 0x1c8]
mov dword [esp + 0x138], ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov dword [esp + 0x144], edx
call fcn.10046180
add esp, 0x18
test byte [esp + 0x1be], 0x20
mov dword [esp + 0x14], eax
jne 0x10051d48
mov eax, dword [esp + 0x1c0]
mov ecx, dword [esp + 0x1c4]
cmp eax, dword [esp + 0x128]
jne 0x10054189
cmp ecx, dword [esp + 0x12c]
je 0x10051d48
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp case.0x10051d33.12
mov eax, dword [edi + 0x30]
mov edx, dword [ebx + 4]
mov esi, dword [eax + edx*4]
mov eax, dword [esi]
test eax, eax
je 0x10054205
mov edi, dword [esp + 0x6c]
mov ecx, dword [edi]
lea edx, [esp + 0x1c]
push edx
mov edx, dword [edi + 4]
push 0
push edx
push ecx
push 0
push eax
mov dword [esp + 0x34], 0
call fcn.10046180
mov dword [esp + 0x2c], eax
mov eax, dword [edi]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [edi + 4]
add esp, 0x18
test eax, eax
sete dl
mov dword [esi + 0xc], ecx
mov byte [esi + 0x11], dl
mov byte [esi + 0x14], 0
mov dword [esi + 0x5c], 0
mov byte [esi + 0x17], 0
test eax, eax
je 0x100541fd
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
mov dword [esi + 0x58], eax
jmp case.0x10051d33.12
cmp byte [esi + 0x15], 0
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
mov dword [esi + 0x58], 0
jmp case.0x10051d33.12
mov ebx, dword [ebx + 4]
mov eax, dword [edi + 0x30]
mov eax, dword [eax + ebx*4]
mov ecx, dword [eax + 0x48]
mov dword [esi], ecx
mov edx, dword [eax + 0x4c]
mov dword [esi + 4], edx
mov eax, dword [edi + 0x30]
mov eax, dword [eax + ebx*4]
add dword [eax + 0x48], 1
mov edx, 0xbf04
adc dword [eax + 0x4c], 0
mov cx, word [esi + 0x1c]
and cx, dx
or cx, 4
mov word [esi + 0x1c], cx
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov edx, dword [edi + 0x30]
mov eax, dword [edx + eax*4]
xor ecx, ecx
mov dword [esp + 0x58], eax
mov eax, dword [eax]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], ecx
cmp eax, ecx
je 0x100544a7
mov dword [esp + 0x44], ecx
mov dword [esp + 0x1c], ecx
call fcn.10049f60
and al, 3
cmp al, 1
jne 0x10053b97
mov eax, dword [esp + 0x58]
cmp byte [eax + 0x13], 0
jne 0x100543c3
mov eax, dword [eax]
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x60], edx
or edx, ecx
mov dword [esp + 0x64], ecx
jne 0x10054316
lea edi, [esp + 0x44]
call fcn.10046140
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
xor edi, edi
cmp dword [esp + 0x44], edi
je 0x100542e3
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], edi
jmp 0x10054316
mov esi, dword [esp + 0x58]
lea eax, [esp + 0x60]
push eax
mov eax, dword [esi]
call fcn.10045680
add esp, 4
cmp dword [esp + 0x60], 0xffffffff
jne 0x1005430d
cmp dword [esp + 0x64], 0x7fffffff
jne 0x1005430d
mov byte [esi + 0x13], 1
jmp 0x10054316
add dword [esp + 0x60], 1
adc dword [esp + 0x64], edi
mov ebx, dword [ebx + 0xc]
test ebx, ebx
je 0x1005437c
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 0x4c]
lea ecx, [ebx + ebx*4]
lea esi, [eax + ecx*8]
call fcn.1004c530
mov eax, dword [esi]
mov ecx, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x10054345
cmp ecx, 0x7fffffff
je 0x10055c87
mov edx, dword [esp + 0x58]
cmp byte [edx + 0x13], 0
jne 0x10055c87
mov edx, dword [esp + 0x64]
add eax, 1
adc ecx, 0
cmp edx, ecx
jg 0x10054373
jl 0x10054369
cmp dword [esp + 0x60], eax
jae 0x10054373
mov edx, ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x60]
mov dword [esi], eax
mov dword [esi + 4], edx
mov ecx, dword [esp + 0x64]
cmp ecx, 0x7fffffff
jg 0x1005439d
jl 0x10054391
cmp dword [esp + 0x60], 0xffffffff
jae 0x1005439d
mov eax, dword [esp + 0x60]
add eax, 1
adc ecx, 0
jmp 0x100543a1
xor eax, eax
xor ecx, ecx
push ecx
mov ecx, dword [esp + 0x5c]
mov esi, dword [ecx]
push eax
call fcn.10045420
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x34]
add esp, 8
cmp byte [eax + 0x13], 0
je 0x10054494
mov eax, dword [esp + 0x18]
mov ebx, dword [eax + 0x38]
mov edi, dword [eax + 0x3c]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edi
mov dword [esp + 0x30], 0
lea ecx, [ecx]
cmp dword [esp + 0x30], 0
jne 0x10054407
mov eax, ebx
and eax, 0xffffff
xor ecx, ecx
cmp eax, ebx
jne 0x10054407
cmp ecx, edi
jne 0x10054407
add ebx, 1
adc edi, ecx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edi
jmp 0x10054437
lea edx, [esp + 0x60]
push edx
push 8
call fcn.10039500
mov ebx, dword [esp + 0x68]
add esp, 8
cmp dword [esp + 0x30], 5
jge 0x10054433
and ebx, 0xffffff
xor edi, edi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edi
jmp 0x10054437
mov edi, dword [esp + 0x64]
mov eax, ebx
or eax, edi
je 0x1005445f
mov edx, dword [esp + 0x58]
mov eax, dword [edx]
lea ecx, [esp + 0x44]
push ecx
push 0
push edi
push ebx
push 0
push eax
call fcn.10046180
add esp, 0x18
inc dword [esp + 0x30]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x30], 0x64
jge 0x10054478
cmp dword [esp + 0x1c], 0
jne 0x10054478
cmp dword [esp + 0x44], 0
je 0x100543e0
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0x18]
mov dword [eax + 0x38], ebx
mov dword [eax + 0x3c], edi
jne 0x10054494
cmp dword [esp + 0x44], 0
je 0x10055c87
mov eax, dword [esp + 0x58]
mov byte [eax + 0x11], 0
mov byte [eax + 0x17], 0
mov dword [eax + 0x5c], 0
mov cx, word [esi + 0x1c]
mov eax, dword [esp + 0x60]
mov edx, 0xbf04
and cx, dx
or cx, 4
mov word [esi + 0x1c], cx
mov ecx, dword [esp + 0x64]
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp case.0x10051d33.12
test byte [ebx + 3], 1
mov ecx, dword [ebx + 8]
mov eax, dword [edi + 0x4c]
mov esi, dword [edi + 0x30]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*8]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebx + 0xc]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*8]
mov ecx, dword [ebx + 4]
mov esi, dword [esi + ecx*4]
mov ecx, dword [eax]
mov dword [esp + 0xb8], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x48], esi
mov dword [esp + 0xbc], ecx
je 0x10054512
inc dword [edi + 0x84]
test byte [ebx + 3], 2
je 0x10054523
mov ecx, dword [eax]
mov dword [edx + 0x30], ecx
mov eax, dword [eax + 4]
mov dword [edx + 0x34], eax
mov edi, dword [esp + 0x24]
movzx eax, word [edi + 0x1c]
xor ecx, ecx
test al, 1
je 0x10054537
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], ecx
cmp byte [esi + 0x15], 0
je 0x10054607
cmp byte [esi + 0x16], 0
jne 0x10054560
mov ecx, dword [esi + 0x30]
mov edx, dword [esp + 0x18]
push ecx
push edx
call fcn.10037ca0
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x2c]
add esp, 8
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xbc]
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], ecx
mov eax, dword [edi + 0x18]
mov dword [esi + 0x2c], eax
mov ecx, dword [edi + 0x14]
cmp ecx, dword [edi + 0x24]
je 0x100545d6
cmp byte [esi + 0x16], 0
jne 0x100545d6
add eax, 2
push eax
call fcn.10037920
add esp, 4
mov dword [esi + 0x30], eax
test eax, eax
je 0x1005213d
mov edx, dword [esi + 0x2c]
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [ecx + 0x14]
push edx
push eax
call fcn.100b6420
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x2c]
mov byte [eax + ecx], 0
mov edx, dword [esi + 0x30]
mov eax, dword [esi + 0x2c]
mov byte [edx + eax + 1], 0
mov edx, dword [esp + 0x24]
add esp, 0xc
mov byte [esi + 0x14], 0
jmp 0x10054680
cmp byte [esi + 0x16], 0
mov dword [esi + 0x30], ecx
jne 0x100545fe
mov cx, word [edi + 0x1c]
mov eax, 0xfbff
and cx, ax
mov eax, 0x1000
or cx, ax
mov word [edi + 0x1c], cx
mov dword [edi + 0x24], 0
mov byte [esi + 0x14], 0
jmp 0x10054680
test byte [ebx + 3], 0x10
je 0x10054616
mov edx, dword [esi + 0x58]
mov dword [esp + 0x38], edx
jmp 0x1005461a
mov dword [esp + 0x38], ecx
test eax, 0x4000
je 0x10054629
mov eax, dword [edi]
mov dword [esp + 0x1c], eax
jmp 0x1005462d
mov dword [esp + 0x1c], ecx
mov edi, dword [esp + 0x48]
mov esi, dword [edi]
push 0
push 0
call fcn.10045420
movzx ecx, byte [ebx + 3]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
and ecx, 8
push ecx
mov ecx, dword [eax + 0x18]
push edx
mov edx, dword [eax + 0x14]
mov eax, dword [esp + 0xcc]
push ecx
mov ecx, dword [esp + 0xcc]
push edx
mov edx, dword [edi]
push eax
mov eax, dword [esp + 0x54]
push ecx
push 0
push edx
call fcn.10049030
mov edx, dword [esp + 0x40]
add esp, 0x28
mov dword [esp + 0x14], eax
mov esi, edi
cmp dword [esp + 0x14], 0
mov byte [esi + 0x11], 0
mov byte [esi + 0x17], 0
mov dword [esi + 0x5c], 0
jne case.0x10051d33.12
mov edx, dword [edx + 0xbc]
test edx, edx
je case.0x10051d33.12
mov eax, dword [ebx + 0x10]
test eax, eax
je case.0x10051d33.12
mov ecx, dword [esp + 0xbc]
mov esi, dword [esi + 4]
push ecx
mov ecx, dword [esp + 0xbc]
push ecx
push eax
mov eax, dword [esp + 0x24]
lea ecx, [esi + esi*2]
mov esi, dword [eax + 8]
mov ecx, dword [esi + ecx*8]
mov eax, dword [eax + 0xb8]
push ecx
mov cl, byte [ebx + 3]
and cl, 4
movzx ecx, cl
neg ecx
sbb ecx, ecx
and ecx, 5
add ecx, 0x12
push ecx
push eax
call edx
add esp, 0x18
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov esi, dword [edi + 0x30]
mov edi, dword [esi + ecx*4]
xor eax, eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
cmp dword [edx + 0xbc], eax
je 0x10054734
cmp dword [ebx + 0x10], eax
je 0x10054734
mov edx, dword [edi + 8]
mov eax, dword [edi + 0xc]
mov dword [esp + 0xd8], edx
mov dword [esp + 0xdc], eax
call fcn.1004f410
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov esi, dword [edi]
push eax
push eax
call fcn.10045420
mov ecx, dword [edi]
add esp, 8
call fcn.10049240
mov dword [esp + 0x14], eax
mov dword [edi + 0x5c], 0
test eax, eax
jne 0x100547a8
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0xbc]
test ecx, ecx
je 0x100547a8
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x100547a8
mov esi, dword [esp + 0xdc]
mov edi, dword [edi + 4]
push esi
mov esi, dword [esp + 0xdc]
push esi
mov esi, dword [edx + 8]
mov edx, dword [edx + 0xb8]
push eax
lea eax, [edi + edi*2]
mov eax, dword [esi + eax*8]
push eax
push 9
push edx
call ecx
add esp, 0x18
test byte [ebx + 8], 1
je case.0x10051d33.12
mov eax, dword [esp + 0x4c]
inc dword [eax + 0x84]
jmp case.0x10051d33.12
cmp dword [ebx + 4], 0
je 0x100547d3
mov eax, dword [edi + 0x84]
add dword [edx + 0x48], eax
mov dword [edx + 0x44], eax
mov dword [edi + 0x84], 0
jmp case.0x10051d33.12
mov eax, dword [ebx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x4c]
mov edx, dword [eax + 0x4c]
mov eax, dword [eax + 0x30]
lea ecx, [edx + ecx*8]
mov edx, dword [ebx + 4]
mov edi, dword [eax + edx*4]
mov ebx, dword [edi]
mov dword [esp + 0x2c], ecx
call fcn.1004f410
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
cmp byte [edi + 0x19], 0
mov eax, ebx
je 0x10054859
lea ecx, [esp + 0x168]
push ecx
call fcn.10045680
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x50]
cdq
add esp, 4
cmp dword [esp + 0x16c], edx
jg 0x10051f9d
mov esi, dword [esp + 0x168]
jl 0x10054850
cmp esi, eax
ja 0x10051f9d
mov dword [esp + 0xd4], esi
jmp 0x1005487d
lea edx, [esp + 0xd4]
push edx
call fcn.100456e0
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x1c]
add esp, 4
cmp esi, dword [eax + 0x50]
jg 0x10051f9d
mov ecx, dword [esp + 0x2c]
push 0
push esi
push ecx
call fcn.1004bf00
add esp, 0xc
test eax, eax
jne 0x1005213d
mov eax, dword [esp + 0x2c]
mov dx, word [eax + 0x1c]
mov ecx, 0xbf10
and dx, cx
or dx, 0x10
mov dword [eax + 0x18], esi
mov word [eax + 0x1c], dx
cmp byte [edi + 0x19], 0
je 0x100548d8
mov edx, dword [eax + 0x14]
push edx
push esi
push 0
mov eax, ebx
call fcn.10045c30
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov dword [esp + 0x14], eax
mov byte [ecx + 0x1f], 1
jmp case.0x10051d33.12
mov eax, dword [eax + 0x14]
push eax
push esi
push 0
push ebx
call fcn.10045c80
mov ecx, dword [esp + 0x3c]
add esp, 0x10
mov dword [esp + 0x14], eax
mov byte [ecx + 0x1f], 1
jmp case.0x10051d33.12
mov edx, dword [ebx + 4]
mov eax, dword [edi + 0x30]
mov esi, dword [eax + edx*4]
cmp byte [esi + 0x14], 0
jne case.0x10051d33.12
cmp byte [esi + 0x17], 0
je 0x1005492b
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x98], ecx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x9c], edx
jmp 0x100549c7
cmp byte [esi + 0x15], 0
je 0x1005494a
mov eax, dword [esi + 0x38]
mov dword [esp + 0x98], eax
mov ecx, dword [esi + 0x3c]
mov dword [esp + 0x9c], ecx
jmp 0x100549c7
mov eax, dword [esi + 0x50]
test eax, eax
je 0x10054987
mov esi, dword [eax]
mov ecx, dword [esi]
lea edx, [esp + 0x98]
push edx
push eax
mov eax, dword [ecx + 0x30]
call eax
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x20]
push ecx
push edx
mov dword [esp + 0x24], eax
call fcn.10037ca0
mov eax, dword [esi + 8]
mov dword [edi + 0x74], eax
add esp, 0x10
mov dword [esi + 8], 0
jmp 0x100549c7
mov edi, esi
call fcn.1004f410
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
cmp byte [esi + 0x11], al
je 0x100549b5
mov ecx, dword [esi + 8]
mov dword [esp + 0x98], ecx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x9c], edx
jmp 0x100549c7
lea eax, [esp + 0x98]
push eax
mov eax, dword [esi]
call fcn.10045680
add esp, 4
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x9c]
mov dword [eax], ecx
mov cx, word [eax + 0x1c]
mov dword [eax + 4], edx
mov edx, 0xbf04
and cx, dx
or cx, 4
mov word [eax + 0x1c], cx
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + eax*4]
mov byte [eax + 0x14], 1
mov byte [eax + 0x11], 0
mov eax, dword [eax]
test eax, eax
je case.0x10051d33.12
mov esi, eax
call fcn.10042610
jmp case.0x10051d33.12
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x30]
mov edx, dword [ebx + 4]
mov esi, dword [ecx + edx*4]
mov eax, dword [esi]
lea edi, [esp + 0x134]
call fcn.10046140
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x134]
mov byte [esi + 0x14], al
mov byte [esi + 0x17], 0
mov byte [esi + 0x11], 0
mov dword [esi + 0x5c], 0
test eax, eax
je case.0x10051d33.12
mov ebx, dword [ebx + 8]
test ebx, ebx
jle case.0x10051d33.12
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
inc dword [edi + 0xc8]
mov eax, dword [edi + 0x30]
mov edx, dword [ebx + 4]
mov esi, dword [eax + edx*4]
mov eax, dword [esi]
test eax, eax
je 0x10054ab8
lea edi, [esp + 0xd0]
call fcn.10046110
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xd0]
test eax, eax
sete cl
mov byte [esi + 0x12], cl
mov byte [esi + 0x17], 0
mov dword [esi + 0x5c], 0
mov byte [esi + 0x11], 0
jmp 0x10054ac4
mov eax, 1
mov dword [esp + 0xd0], eax
mov byte [esi + 0x14], al
test eax, eax
je case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov edx, dword [edx + 0xd8]
test edx, edx
jne 0x10055ced
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov esi, dword [ecx + eax*4]
test esi, esi
je case.0x10051d33.12
mov eax, dword [esi]
mov dword [esp + 0xa4], 1
cmp byte [ebx], 0x6a
jne 0x10054b1d
lea edx, [esp + 0xa4]
push edx
push eax
call fcn.10046630
jmp 0x10054b2b
lea ecx, [esp + 0xa4]
push ecx
push eax
call fcn.100467c0
mov dl, byte [esp + 0xac]
add esp, 8
mov byte [esi + 0x14], dl
mov dword [esi + 0x5c], 0
cmp dword [esp + 0xa4], 0
mov dword [esp + 0x14], eax
jne 0x10054b6d
mov eax, dword [ebx + 8]
mov bl, byte [ebx + 3]
dec eax
mov dword [esp + 0x28], eax
test bl, bl
je 0x10054b6d
movzx eax, bl
inc dword [edi + eax*4 + 0xc0]
lea edi, [edi + eax*4 + 0xc0]
mov byte [esi + 0x11], 0
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov edx, dword [edi + 0x30]
mov edi, dword [edx + ecx*4]
mov eax, dword [edi]
mov dword [esp + 0x1c], eax
test eax, eax
je case.0x10051d33.12
mov ecx, dword [esp + 0x50]
mov eax, 0x4000
test word [ecx + 0x1c], ax
je 0x10054baf
mov esi, ecx
call fcn.1004c0a0
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
test byte [ebx + 3], 0x10
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 0x18]
mov esi, dword [ecx + 0x14]
je 0x10054bc4
mov ecx, dword [edi + 0x58]
jmp 0x10054bc6
xor ecx, ecx
mov edx, dword [ebx + 0xc]
push edx
push 0
push 0
cdq
push 0x100dce96
push edx
push eax
mov eax, dword [esp + 0x34]
push esi
push eax
mov eax, ecx
call fcn.10049030
add esp, 0x20
mov dword [esp + 0x14], eax
mov dword [edi + 0x5c], 0
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov edx, dword [edi + 0x30]
mov eax, dword [edx + ecx*4]
mov esi, dword [eax]
mov dword [esp + 0x1c], eax
test esi, esi
je case.0x10051d33.12
mov eax, dword [eax + 0x40]
mov cx, word [ebx + 0xc]
mov ebx, dword [ebx + 8]
mov dword [esp + 0x248], eax
mov word [esp + 0x24c], cx
mov ecx, dword [edi + 0x4c]
xor edx, edx
lea eax, [ebx + ebx*4]
mov word [esp + 0x24e], dx
lea edx, [ecx + eax*8]
lea eax, [esp + 0x11c]
push eax
push 0
push 0
push 0
lea ecx, [esp + 0x258]
push ecx
push esi
mov dword [esp + 0x270], edx
call fcn.10046180
add esp, 0x18
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10054c7b
cmp dword [esp + 0x11c], eax
jne 0x10054c7b
mov ecx, esi
call fcn.10049240
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x5c], 0
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov edi, dword [ecx + eax*4]
mov esi, dword [edi]
test esi, esi
je case.0x10051d33.12
call fcn.1004f410
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
cmp byte [edi + 0x14], al
jne case.0x10051d33.12
lea edx, [esp + 0x158]
push edx
mov eax, esi
call fcn.1004fcf0
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10055c8f
mov eax, dword [esp + 0x2c]
mov cx, word [eax + 0x1c]
mov edx, 0xbf04
and cx, dx
mov edx, dword [esp + 0x15c]
or cx, 4
mov word [eax + 0x1c], cx
mov ecx, dword [esp + 0x158]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + eax*4]
cmp dword [eax], 0
je case.0x10051d33.12
cmp byte [ebx + 3], 0
mov edx, dword [eax + 0x40]
mov cx, word [ebx + 0x10]
mov dword [esp + 0x1e8], edx
mov word [esp + 0x1ec], cx
je 0x10054d43
mov edx, 0xc
mov word [esp + 0x1ee], dx
jmp 0x10054d50
mov ecx, 4
mov word [esp + 0x1ee], cx
mov ecx, dword [ebx + 0xc]
lea edx, [ecx + ecx*4]
mov ecx, dword [edi + 0x4c]
lea edx, [ecx + edx*8]
lea ecx, [esp + 0x90]
mov dword [esp + 0x1f8], edx
push ecx
lea edx, [esp + 0x1ec]
push edx
call fcn.1004fe10
add esp, 8
cmp byte [ebx], 0x29
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x90]
jne 0x10054d8f
neg eax
jmp 0x10054d90
inc eax
mov dword [esp + 0x90], eax
test eax, eax
jle case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov edx, dword [edx + 0x8c]
xor eax, eax
test edx, edx
je 0x10054df9
jmp 0x10054dc0
cmp dword [edx + 0x44], 0xbdf20da3
jne 0x10054dd9
cmp byte [edx + 0x80], 2
jae 0x10054dd9
cmp dword [edx + 0x60], 0
jl 0x10054dd9
inc eax
mov edx, dword [edx + 8]
test edx, edx
jne 0x10054dc0
cmp eax, 1
jle 0x10054df9
mov dword [esp + 0x14], 6
mov dword [edi + 0x68], 2
jmp case.0x10051d33.12
mov eax, dword [ebx + 0xc]
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 4]
lea edi, [eax + eax*2]
add edi, edi
lea eax, [esp + 0x8c]
push eax
mov eax, dword [edx + 8]
add edi, edi
add edi, edi
mov eax, dword [eax + edi + 4]
push ecx
call fcn.10049d20
mov dx, word [esi + 0x1c]
mov ecx, eax
mov eax, 0xbf04
and dx, ax
mov eax, dword [esp + 0x94]
or dx, 4
mov word [esi + 0x1c], dx
cdq
add esp, 8
mov dword [esp + 0x14], ecx
mov dword [esi], eax
mov dword [esi + 4], edx
test ecx, ecx
jne case.0x10051d33.12
mov edx, dword [esp + 0x8c]
test edx, edx
je case.0x10051d33.12
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx + 8]
add esi, edi
mov edi, dword [ebx + 4]
call fcn.100639d0
jmp case.0x10051d33.12
mov edx, dword [ebx + 0xc]
mov ecx, dword [ebx + 4]
neg edx
sbb edx, edx
lea eax, [esp + 0x38]
and edx, eax
mov eax, dword [ebx + 8]
push edx
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x1c]
push ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x40], 0
mov edx, dword [ecx + edx*8 + 4]
push edx
call fcn.10049a60
add esp, 0xc
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x14], eax
je case.0x10051d33.12
mov eax, dword [esp + 0x38]
add dword [edi + 0x84], eax
mov ebx, dword [ebx + 0xc]
test ebx, ebx
jle case.0x10051d33.12
mov edx, dword [edi + 0x4c]
lea ecx, [ebx + ebx*4]
lea ecx, [edx + ecx*8]
cdq
add dword [ecx], eax
adc dword [ecx + 4], edx
jmp case.0x10051d33.12
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
mov ebx, dword [ebx + 4]
xor ecx, ecx
cmp byte [esp + 0x37], 0x35
lea eax, [ebx + ebx*2]
setne cl
lea eax, [edx + eax*8]
mov eax, dword [eax + 4]
mov dword [esp + 0x24], 0
dec ecx
and ecx, 3
add ecx, 2
push ecx
lea ecx, [esp + 0x28]
push ecx
call fcn.10049870
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x2c]
add esp, 8
cdq
mov dword [esi + 4], edx
mov dx, word [esi + 0x1c]
mov dword [esi], eax
mov eax, 0xbf04
and dx, ax
or dx, 4
mov word [esi + 0x1c], dx
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov esi, dword [esp + 0x18]
push esi
mov dword [esp + 0x20], ecx
call fcn.10041fa0
mov eax, dword [esp + 0x20]
add esp, 4
cmp dword [ebx + 8], 0
jne 0x10054f76
mov ecx, dword [esi + 8]
lea edx, [eax + eax*2]
mov edx, dword [ecx + edx*8 + 0x14]
test byte [edx + 0x3a], 1
je 0x1005501c
mov ecx, str.sqlite_temp_master
cmp eax, 1
je 0x10054f85
mov ecx, str.sqlite_master
mov edx, dword [ebx + 4]
mov dword [esp + 0x14c], edx
mov edx, dword [ebx + 0x10]
push edx
push ecx
mov ecx, dword [esi + 8]
add edi, 0x74
lea eax, [eax + eax*2]
mov dword [esp + 0x150], esi
mov dword [esp + 0x158], edi
mov edx, dword [ecx + eax*8]
push edx
push str.SELECT_name__rootpage__sql_FROM__q._s_WHERE__s
push esi
call fcn.10039240
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x10054fcd
mov dword [esp + 0x14], 7
jmp 0x1005501c
push 0
lea eax, [esp + 0x14c]
push eax
push fcn.100706c0
push edi
push esi
mov byte [esi + 0x80], 1
mov dword [esp + 0x168], 0
call fcn.1006db10
add esp, 0x14
mov dword [esp + 0x14], eax
test eax, eax
jne 0x1005500b
mov ecx, dword [esp + 0x154]
mov dword [esp + 0x14], ecx
push edi
push esi
call fcn.10037ca0
add esp, 8
mov byte [esi + 0x80], 0
push esi
call fcn.10042080
add esp, 4
cmp dword [esp + 0x14], 7
je 0x1005213d
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov edi, dword [esp + 0x18]
call fcn.1005fdd0
mov dword [esp + 0x14], eax
jmp case.0x10051d33.12
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 4]
push edx
call fcn.10061dd0
add esp, 4
jmp case.0x10051d33.12
mov eax, dword [esp + 0x18]
mov ecx, dword [ebx + 0x10]
push eax
mov eax, dword [ebx + 4]
call fcn.10061620
add esp, 4
jmp case.0x10051d33.12
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 4]
push ecx
mov ecx, dword [ebx + 0x10]
call fcn.1007ac10
add esp, 4
jmp case.0x10051d33.12
mov eax, dword [ebx + 8]
mov esi, dword [esp + 0x18]
lea ecx, [eax*4 + 4]
mov dword [esp + 0x38], eax
call fcn.10037ea0
mov dword [esp + 0x24], eax
test eax, eax
je 0x1005213d
mov ecx, dword [ebx + 0xc]
mov eax, dword [edi + 0x4c]
lea edx, [ecx + ecx*4]
mov ecx, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
lea edi, [eax + edx*8]
xor esi, esi
lea eax, [eax + ecx*8]
mov dword [esp + 0x20], eax
cmp dword [esp + 0x38], esi
jle 0x100550fc
mov dword [esp + 0x1c], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x1c]
call fcn.1004c3a0
mov edx, dword [esp + 0x24]
add dword [esp + 0x1c], 0x28
mov dword [edx + esi*4], eax
inc esi
cmp esi, dword [esp + 0x38]
jl 0x100550e0
mov eax, dword [esp + 0x24]
mov dword [eax + esi*4], 0
mov edx, dword [edi]
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x130]
push ecx
mov ecx, dword [esp + 0x3c]
push edx
push ecx
push eax
movzx eax, byte [ebx + 3]
lea edx, [eax + eax*2]
mov eax, dword [esi + 8]
mov ecx, dword [eax + edx*8 + 4]
call fcn.1004abd0
mov ecx, dword [esp + 0x34]
push ecx
push esi
mov dword [esp + 0x34], eax
call fcn.10037ca0
mov ebx, dword [esp + 0x148]
mov esi, dword [esp + 0x38]
mov eax, ebx
cdq
add esp, 0x18
sub dword [edi], eax
sbb dword [edi + 4], edx
call fcn.1004c640
test ebx, ebx
je 0x1005517e
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1005213d
push fcn.10037c20
push 1
push 0xffffffffffffffff
push eax
mov edx, esi
push edx
call fcn.1004c900
add esp, 0x14
movzx ecx, byte [esp + 0x54]
mov eax, dword [esp + 0x20]
call fcn.1004bee0
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov edi, dword [edi + 0x4c]
mov ebx, dword [ebx + 8]
lea eax, [eax + eax*4]
test byte [edi + eax*8 + 0x1c], 0x20
lea esi, [edi + eax*8]
lea ecx, [ebx + ebx*4]
lea edi, [edi + ecx*8]
jne 0x100551c0
push esi
call fcn.1004c710
add esp, 4
test byte [esi + 0x1c], 0x20
je 0x1005213d
mov edx, dword [edi + 4]
mov eax, dword [edi]
mov edi, dword [esi]
push edx
push eax
call fcn.1003ddc0
add esp, 8
jmp case.0x10051d33.12
mov ecx, dword [edx + 0xd8]
test ecx, ecx
jne 0x10055ced
mov ecx, dword [ebx + 4]
mov eax, dword [edi + 0x4c]
lea edx, [ecx + ecx*4]
test byte [eax + edx*8 + 0x1c], 0x20
mov ecx, dword [ebx + 0xc]
lea edi, [eax + edx*8]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
mov dword [esp + 0x2c], edx
je 0x10055237
mov eax, dword [edi]
lea esi, [esp + 0x138]
call fcn.1003e1d0
test eax, eax
je 0x10055237
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
mov esi, dword [esp + 0x2c]
push eax
push ecx
call fcn.1004c670
add esp, 8
jmp case.0x10051d33.12
mov esi, edi
call fcn.1004c640
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
test byte [ecx + 0x1c], 0x20
mov esi, dword [ebx + 0x10]
jne 0x1005526b
mov edi, dword [esp + 0x20]
push edi
call fcn.1004c710
add esp, 4
test byte [edi + 0x1c], 0x20
je 0x1005213d
test esi, esi
je 0x100552aa
js 0x10055278
mov eax, esi
and eax, 0xf
jmp 0x1005527d
mov eax, 0xff
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
push edx
mov edx, dword [esp + 0x24]
push ecx
push eax
mov eax, dword [edx]
call fcn.1003e250
add esp, 0xc
test eax, eax
je 0x100552a8
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
test esi, esi
js case.0x10051d33.12
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x20]
mov edi, dword [eax]
push ecx
push edx
call fcn.1003ddc0
add esp, 8
jmp case.0x10051d33.12
mov ebx, dword [edi + 0x54]
lea eax, [ebx + 1]
mov dword [edi + 0x54], eax
cmp ebx, dword [edi + 0x58]
jl 0x10055306
mov ecx, dword [esp + 0x4c]
mov edi, dword [ecx + 0x5c]
mov esi, dword [esp + 0x18]
mov dword [ecx + 0x58], eax
lea eax, [ebx + 1]
shl eax, 4
call fcn.10037fd0
mov ecx, dword [esp + 0x4c]
mov dword [ecx + 0x5c], eax
test eax, eax
je 0x1005213d
mov edi, ecx
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 0x30]
shl ebx, 4
add ebx, dword [edi + 0x5c]
mov dword [ebx], edx
mov eax, dword [eax + 0x34]
mov dword [ebx + 4], eax
mov ecx, dword [edi + 0x84]
mov dword [ebx + 8], ecx
jmp case.0x10051d33.12
dec dword [edi + 0x54]
mov eax, dword [edi + 0x54]
shl eax, 4
add eax, dword [edi + 0x5c]
mov ecx, dword [eax]
mov dword [edx + 0x30], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 0x34], ecx
mov edx, dword [eax + 8]
mov dword [edi + 0x84], edx
jmp case.0x10051d33.12
mov edi, dword [esp + 0x20]
mov esi, edi
call fcn.1004c530
mov esi, dword [esp + 0x50]
call fcn.1004c530
mov eax, dword [esi]
mov esi, dword [esi + 4]
cmp dword [edi + 4], esi
jg case.0x10051d33.12
jl 0x1005537c
mov edx, edi
cmp dword [edx], eax
jae case.0x10051d33.12
mov ecx, dword [esp + 0x20]
mov dword [ecx], eax
mov dword [ecx + 4], esi
jmp case.0x10051d33.12
cmp dword [ecx + 4], 0
jl case.0x10051d33.12
jg 0x1005539f
cmp dword [ecx], 0
jbe case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
cmp dword [ecx + 4], 0
jg case.0x10051d33.12
jl 0x100553c1
cmp dword [ecx], 0
jae case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov edx, dword [ecx]
or edx, dword [ecx + 4]
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov edx, dword [edi + 0x24]
movzx esi, byte [ebx + 3]
mov eax, dword [ebx + 8]
mov ecx, dword [edi + 0x4c]
mov dword [esp + 0x1c], edx
lea eax, [eax + eax*4]
xor edx, edx
lea ecx, [ecx + eax*8]
test esi, esi
jle 0x10055417
mov eax, dword [esp + 0x1c]
mov dword [eax + edx*4], ecx
call fcn.10051880
inc edx
add ecx, 0x28
cmp edx, esi
jl 0x10055403
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 0x10]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea eax, [eax + edx*8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x200], ecx
mov dword [esp + 0x230], eax
inc dword [eax + 0x18]
xor eax, eax
mov dword [esp + 0x21c], eax
mov dword [esp + 0x22c], eax
mov dword [esp + 0x228], eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], eax
mov eax, dword [esp + 0x200]
mov ecx, 1
mov word [esp + 0x224], cx
mov dword [esp + 0x218], edx
test byte [eax + 3], 8
je 0x1005548b
mov ecx, dword [ebx - 4]
mov dword [esp + 0x238], ecx
mov edx, dword [esp + 0x1c]
push edx
mov edx, dword [eax + 0x10]
lea ecx, [esp + 0x204]
push esi
push ecx
call edx
add esp, 0xc
cmp dword [esp + 0x234], 0
je 0x100554dc
push 1
lea eax, [esp + 0x20c]
call fcn.1004ce30
add esp, 4
push eax
mov eax, dword [esp + 0x1c]
push 0x100f06f8
lea esi, [edi + 0x74]
call fcn.100380b0
mov eax, dword [esp + 0x23c]
add esp, 8
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x208]
push ecx
call fcn.1004c2d0
add esp, 4
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea esi, [eax + edx*8]
mov eax, dword [ebx + 0x10]
mov ecx, esi
mov dword [esp + 0x1c], esi
call fcn.1004c1f0
mov dword [esp + 0x14], eax
cmp eax, 1
jne 0x10055538
push eax
mov eax, esi
call fcn.1004ce30
add esp, 4
push eax
mov eax, dword [esp + 0x1c]
push 0x100f06f8
lea esi, [edi + 0x74]
call fcn.100380b0
mov esi, dword [esp + 0x24]
add esp, 8
movzx ecx, byte [esp + 0x54]
mov eax, esi
call fcn.1004bee0
mov ecx, esi
call fcn.1004c7c0
test eax, eax
jne 0x10051f9d
jmp case.0x10051d33.12
cmp byte [edx + 0x1c], 0
mov eax, dword [esp + 0x18]
jne 0x1005557f
push str.cannot_VACUUM_from_within_a_transaction
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 4
mov dword [esp + 0x14], 1
jmp case.0x10051d33.12
call fcn.1007e140
mov dword [esp + 0x14], eax
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*2]
mov eax, dword [edx + 8]
mov eax, dword [eax + ecx*8 + 4]
push eax
call fcn.10044bf0
add esp, 4
mov dword [esp + 0x14], eax
cmp eax, 0x65
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], 0
jmp case.0x10051d33.12
cmp dword [ebx + 4], 0
jne 0x100555dd
mov eax, dword [esp + 0x18]
call fcn.1004fec0
jmp case.0x10051d33.12
mov byte [edi + 0x7e], 1
jmp case.0x10051d33.12
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 4]
mov cl, byte [ebx + 0xc]
push edx
mov edx, dword [esp + 0x1c]
mov edx, dword [edx + 8]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*8 + 4]
call fcn.1004b260
add esp, 4
mov dword [esp + 0x14], eax
cmp al, 6
jne case.0x10051d33.12
mov eax, dword [ebx + 0x10]
push eax
mov eax, dword [esp + 0x1c]
push str.database_table_is_locked:__s
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 8
jmp case.0x10051d33.12
mov ebx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x18]
push ecx
mov eax, ebx
call fcn.1007f4a0
add esp, 4
mov dword [esp + 0x14], eax
test ebx, ebx
je case.0x10051d33.12
mov edx, dword [edi + 0x74]
mov eax, dword [esp + 0x18]
push edx
push eax
call fcn.10037ca0
mov ecx, dword [ebx + 8]
mov dword [edi + 0x74], ecx
add esp, 8
mov dword [ebx + 8], 0
jmp case.0x10051d33.12
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
add edi, 0x74
push edi
push edx
call fcn.1007f000
add esp, 8
mov dword [esp + 0x14], eax
jmp case.0x10051d33.12
mov esi, dword [esp + 0x18]
mov byte [edi + 0x80], 2
mov eax, dword [ebx + 0x10]
push eax
mov eax, dword [ebx + 4]
call fcn.1007f270
add esp, 4
mov dword [esp + 0x14], eax
mov byte [edi + 0x80], 0
jmp case.0x10051d33.12
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x30], 0
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
lea ecx, [esp + 0x30]
push ecx
push esi
mov dword [esp + 0x24], eax
call edx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x74]
push eax
push ecx
call fcn.10037ca0
mov edx, dword [esi + 8]
add esp, 0x10
cmp dword [esp + 0x14], 0
mov dword [edi + 0x74], edx
mov dword [esi + 8], 0
jne case.0x10051d33.12
mov eax, dword [esp + 0x30]
push 0
mov dword [eax], esi
mov ecx, dword [ebx + 4]
push 0xffffffffffffffff
push 0
push ecx
mov eax, edi
call fcn.100518b0
add esp, 0x10
test eax, eax
je 0x10055738
mov edx, dword [esp + 0x30]
mov dword [eax + 0x50], edx
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
mov ecx, dword [edx]
mov dword [eax + 0x54], ecx
jmp case.0x10051d33.12
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
mov byte [edx + 0x1e], 1
mov edx, dword [ecx + 0x1c]
push eax
call edx
add esp, 4
jmp case.0x10051d33.12
mov eax, dword [ebx + 0xc]
mov ecx, dword [edi + 0x4c]
mov edx, dword [ebx + 4]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, dword [edi + 0x30]
mov ecx, dword [ecx + edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [ecx + 0x50]
mov esi, dword [ecx]
mov edx, dword [esi]
mov dword [esp + 0x48], edx
mov edx, dword [eax]
mov dword [esp + 0x44], edx
mov edx, dword [edi + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x38], edx
xor edx, edx
mov dword [esp + 0x30], ecx
test ecx, ecx
jle 0x100557c1
add eax, 0x50
mov dword [esp + 0x1c], eax
jmp 0x100557a5
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
mov dword [ecx + edx*4], eax
mov ecx, eax
call fcn.10051880
mov ecx, dword [esp + 0x30]
add dword [esp + 0x1c], 0x28
inc edx
cmp edx, ecx
jl 0x100557a1
inc dword [esi + 4]
mov edx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x4c]
mov byte [edi + 0x80], 1
mov eax, dword [ebx + 0x10]
push eax
mov eax, dword [esp + 0x54]
push ecx
mov ecx, dword [eax + 0x20]
push edx
call ecx
mov edx, dword [edi + 0x74]
add esp, 0x14
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
push edx
push eax
mov byte [edi + 0x80], 0
call fcn.10037ca0
mov ecx, dword [esi + 8]
mov dword [edi + 0x74], ecx
mov ecx, dword [esp + 0x20]
add esp, 8
mov eax, esi
mov dword [esi + 8], 0
call fcn.1007e5b0
cmp dword [esp + 0x14], 0
jne 0x10055843
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x28]
push edx
call ecx
add esp, 4
test eax, eax
je 0x10055843
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
mov edx, dword [esp + 0x74]
mov byte [edx + 0x14], 0
jmp case.0x10051d33.12
mov eax, dword [ebx + 4]
mov ecx, dword [edi + 0x30]
mov ecx, dword [ecx + eax*4]
cmp byte [ecx + 0x14], 0
mov eax, dword [ebx + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x4c]
lea edx, [eax + edx*8]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x1c], edx
je 0x1005587f
mov esi, edx
call fcn.1004c640
jmp case.0x10051d33.12
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 0x50]
mov esi, dword [ecx]
mov edx, dword [esi]
push 0x40
lea eax, [esp + 0x264]
push 0
push eax
mov dword [esp + 0x30], edx
call fcn.100b8f90
mov ecx, dword [esp + 0x28]
add esp, 0xc
push ecx
lea eax, [esp + 0x26c]
call fcn.1004c8c0
mov edx, dword [esp + 0x288]
mov eax, dword [ebx + 8]
and edx, 0xbf01
or edx, 1
add esp, 4
mov word [esp + 0x284], dx
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [edx + 0x50]
lea ecx, [esp + 0x264]
push ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + 0x2c]
push eax
call edx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x74]
add esp, 0xc
push eax
push ecx
call fcn.10037ca0
mov edx, dword [esi + 8]
movzx ecx, byte [esp + 0x5c]
mov dword [edi + 0x74], edx
lea eax, [esp + 0x270]
mov dword [esi + 8], 0
call fcn.1004bee0
mov esi, dword [esp + 0x24]
lea eax, [esp + 0x270]
push eax
mov eax, esi
call fcn.1004c8c0
add esp, 0xc
mov ecx, esi
call fcn.1004c7c0
test eax, eax
jne 0x10051f9d
jmp case.0x10051d33.12
mov ecx, dword [ebx + 4]
mov edx, dword [edi + 0x30]
mov eax, dword [edx + ecx*4]
cmp byte [eax + 0x14], 0
mov dword [esp + 0x1c], eax
jne case.0x10051d33.12
mov ecx, eax
mov eax, dword [ecx + 0x50]
mov esi, dword [eax]
mov eax, dword [esi]
inc dword [esi + 4]
mov byte [edi + 0x80], 1
mov ecx, dword [ecx + 0x50]
mov edx, dword [eax + 0x24]
push ecx
mov dword [esp + 0x3c], eax
call edx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x74]
add esp, 4
push eax
push ecx
mov byte [edi + 0x80], 0
call fcn.10037ca0
mov edx, dword [esi + 8]
mov ecx, dword [esp + 0x20]
mov dword [edi + 0x74], edx
add esp, 8
mov eax, esi
mov dword [esi + 8], 0
call fcn.1007e5b0
cmp dword [esp + 0x14], 0
jne 0x100559d9
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x50]
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x28]
push ecx
call eax
add esp, 4
test eax, eax
jne case.0x10051d33.12
mov ebx, dword [ebx + 8]
dec ebx
mov dword [esp + 0x28], ebx
jmp case.0x10051d33.12
mov esi, dword [ebx + 0x10]
mov ebx, dword [ebx + 4]
mov edx, dword [edi + 0x4c]
lea ecx, [ebx + ebx*4]
test byte [edx + ecx*8 + 0x1c], 0x12
lea ebx, [edx + ecx*8]
mov dword [esp + 0x1c], esi
jne 0x10055a1c
movzx edi, byte [esp + 0x54]
mov esi, ebx
call fcn.1004c150
test eax, eax
jne 0x1005213d
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x1c]
inc dword [esi + 4]
mov ecx, dword [ebx + 0x14]
mov eax, dword [esi]
mov edx, dword [eax + 0x4c]
push ecx
push esi
call edx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x74]
push eax
push ebx
call fcn.10037ca0
mov ecx, dword [esi + 8]
mov dword [edi + 0x74], ecx
add esp, 0x10
mov eax, esi
mov ecx, ebx
mov dword [esi + 8], 0
call fcn.1007e5b0
jmp case.0x10051d33.12
mov esi, dword [ebx + 0x10]
mov eax, dword [esi]
cmp dword [eax + 0x34], 0
mov edx, dword [ebx + 8]
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], edx
jne 0x10055a7b
push str.read_only_table
jmp 0x1005383f
mov eax, dword [ebx + 0xc]
mov ecx, dword [edi + 0x4c]
mov edx, dword [edi + 0x24]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], 0
test eax, eax
jle 0x10055ab8
call fcn.10051880
mov eax, dword [esp + 0x1c]
mov dword [edx + eax*4], ecx
inc eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
add ecx, 0x28
cmp dword [esp + 0x1c], eax
jl 0x10055a9a
inc dword [esi + 4]
lea ecx, [esp + 0x140]
push ecx
push edx
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [edx + 0x34]
push esi
call eax
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x28]
push ecx
push edx
mov dword [esp + 0x2c], eax
call fcn.10037ca0
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x30]
mov dword [edi + 0x74], eax
add esp, 0x18
mov eax, esi
mov dword [esi + 8], 0
call fcn.1007e5b0
cmp dword [ebx + 4], 0
je 0x10055b21
cmp dword [esp + 0x14], 0
jne 0x10055b21
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x140]
mov edx, dword [esp + 0x144]
mov dword [eax + 0x30], ecx
mov dword [eax + 0x34], edx
inc dword [edi + 0x84]
jmp case.0x10051d33.12
mov ebx, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
lea eax, [ebx + ebx*2]
mov eax, dword [edx + eax*8 + 4]
mov ecx, dword [eax + 4]
mov edi, dword [ecx]
lea edx, [esp + 0x114]
push edx
call fcn.10040030
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne case.0x10051d33.12
mov ecx, dword [esp + 0x2c]
mov eax, 4
mov word [ecx + 0x1c], ax
mov eax, dword [esp + 0x114]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp case.0x10051d33.12
mov ebx, dword [ebx + 0x10]
test ebx, ebx
je 0x10055b88
mov edi, ebx
jmp 0x10055b8e
mov edi, dword [edi + 0xcc]
test edi, edi
je case.0x10051d33.12
mov edx, dword [edx + 0x98]
test edx, edx
je case.0x10051d33.12
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x9c]
push edi
push eax
call edx
add esp, 8
jmp case.0x10051d33.12
mov dword [esp + 0x14], 9
jmp 0x10052161
lea eax, [esp + 0x180]
push eax
call fcn.1004c2d0
add esp, 4
jmp 0x1005213d
mov dword [esp + 0x14], 0x14
jmp 0x10055c8f
mov ecx, dword [esp + 0x28]
mov dword [edi + 0x60], ecx
mov byte [esi + 0x1c], 0
mov esi, 5
mov dword [edi + 0x64], esi
jmp 0x1005218a
mov esi, dword [esp + 0x18]
test ebx, ebx
je 0x10055c2f
mov eax, esi
call fcn.10087d10
mov byte [esi + 0x1c], 1
mov esi, dword [esp + 0x18]
call fcn.100876b0
mov esi, dword [edi + 0x64]
neg esi
sbb esi, esi
and esi, 0xffffff9c
add esi, 0x65
jmp 0x1005218a
mov bl, byte [esp + 0x1c]
push edi
mov byte [esi + 0x1c], bl
call fcn.1004eda0
add esp, 4
cmp eax, 5
jne 0x10055c14
mov edx, dword [esp + 0x28]
mov al, 1
sub al, bl
mov dword [edi + 0x60], edx
mov byte [esi + 0x1c], al
mov esi, 5
mov dword [edi + 0x64], esi
jmp 0x1005218a
mov ecx, dword [esp + 0x28]
mov esi, 5
mov dword [edi + 0x60], ecx
mov dword [edi + 0x64], esi
jmp 0x1005218a
mov edx, dword [esp + 0x28]
mov esi, 5
mov dword [edi + 0x60], edx
mov dword [edi + 0x64], esi
jmp 0x1005218a
mov dword [esp + 0x14], 0xd
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x1e], 0
je 0x10055ca3
mov dword [esp + 0x14], 7
jmp 0x10055cb1
cmp dword [esp + 0x14], 0xc0a
je 0x10052161
mov eax, dword [esp + 0x14]
and eax, 0xff
cmp eax, 0x1a
ja 0x10055cca
mov eax, dword [eax*4 + 0x100eb9b0]
test eax, eax
jne 0x10055ccf
mov eax, str.unknown_error
mov esi, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x1c]
push 0x100f06f8
add esi, 0x74
call fcn.100380b0
add esp, 8
jmp 0x10052161
mov eax, 9
mov dword [esp + 0x14], eax
mov dword [edi + 0x64], eax
mov eax, dword [str.interrupted]
test eax, eax
jne 0x10055d07
mov eax, str.unknown_error
push eax
mov eax, dword [esp + 0x1c]
push 0x100f06f8
lea esi, [edi + 0x74]
call fcn.100380b0
add esp, 8
jmp 0x10052161