Function at 0x10039050
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
sub esp, 0x40
push ebx
push ebp
mov eax, ecx
mov dword [esp + 0x18], eax
push esi
push edi
test eax, eax
je case.0x1003a0c0.16211
cmp dword [eax + 0x20], 0
je case.0x1003a0c0.16211
cmp dword [eax + 0x24], 0
je case.0x1003a0c0.16211
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x1c], edx
test edx, edx
je case.0x1003a0c0.16211
cmp dword [edx], eax
jne case.0x1003a0c0.16211
mov ecx, dword [edx + 4]
mov dword [esp + 0x3c], ecx
lea eax, [ecx - 0x3f34]
cmp eax, 0x1f
ja case.0x1003a0c0.16211
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x2c], ebx
test ebx, ebx
je case.0x1003a0c0.16211
mov edi, dword [eax]
mov dword [esp + 0x18], edi
test edi, edi
jne 0x100390cc
cmp dword [eax + 4], edi
jne case.0x1003a0c0.16211
cmp ecx, 0x3f3f
jne 0x100390f1
mov dword [edx + 4], 0x3f40
mov ecx, dword [eax + 0xc]
mov edi, dword [eax]
mov dword [esp + 0x2c], ecx
mov ecx, 0x3f40
mov dword [esp + 0x18], edi
mov dword [esp + 0x3c], ecx
mov ebx, dword [eax + 0x10]
add ecx, 0xffffc0cc
mov ebp, dword [eax + 4]
mov esi, dword [edx + 0x40]
mov dword [esp + 0x24], ebx
mov edi, dword [esp + 0x24]
mov ebx, dword [edx + 0x3c]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x40], ebp
mov dword [esp + 0x34], 0
cmp ecx, 0x1f
ja case.0x1003a0c0.16211
mov dword [esp + 0x44], 0x1f
jmp dword [ecx*4 + 0x1003a6b8]
mov ecx, dword [edx + 0xc]
test ecx, ecx
jne 0x1003914e
mov dword [edx + 4], 0x3f40
jmp 0x1003a0a6
cmp esi, 0x10
jae 0x10039179
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x10
jb 0x10039153
mov ecx, dword [edx + 0xc]
test cl, 2
je 0x100391cc
cmp ebx, 0x8b1f
jne 0x100391cc
cmp dword [edx + 0x28], 0
jne 0x10039193
mov dword [edx + 0x28], 0xf
mov dword [edx + 0x1c], 0
xor ecx, ecx
push 2
lea edx, [esp + 0x2c]
mov word [esp + 0x2c], 0x8b1f
call fcn.10035d90
mov edx, dword [esp + 0x20]
xor ebx, ebx
add esp, 4
mov dword [esp + 0x14], ebx
xor esi, esi
mov dword [edx + 0x1c], eax
mov dword [edx + 4], 0x3f35
jmp 0x1003a0a6
mov eax, dword [edx + 0x24]
mov dword [edx + 0x14], 0
test eax, eax
je 0x100391e4
mov dword [eax + 0x30], 0xffffffff
mov ecx, dword [edx + 0xc]
test cl, 1
je 0x100392a3
movzx ecx, bl
mov eax, ebx
shr eax, 8
xor edx, edx
shl ecx, 8
add eax, ecx
div dword [esp + 0x44]
test edx, edx
mov edx, dword [esp + 0x1c]
jne 0x100392a3
mov eax, ebx
and al, 0xf
cmp al, 8
je 0x1003922b
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.6ZSZ6Kv55qE5Y6L57yp5qC85byP
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
mov eax, dword [edx + 0x28]
sub esi, 4
shr ebx, 4
mov ecx, ebx
mov dword [esp + 0x14], ebx
and ecx, 0xf
add ecx, 8
test eax, eax
jne 0x10039249
mov dword [edx + 0x28], ecx
mov eax, ecx
cmp ecx, 0xf
ja 0x1003928c
cmp ecx, eax
ja 0x1003928c
shr ebx, 8
mov eax, 1
shl eax, cl
not ebx
mov ecx, dword [esp + 0x20]
and ebx, 2
or ebx, 0x3f3d
mov dword [edx + 0x18], eax
mov dword [edx + 0x1c], 1
mov dword [ecx + 0x30], 1
mov dword [edx + 4], ebx
xor ebx, ebx
mov dword [esp + 0x14], ebx
xor esi, esi
jmp 0x1003a0a6
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5YWz6ZSu5YC5pWw5LiN5q2j56Gu
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5paH5Lu25aS05qCh6aqM5LiN5q2j56Gu
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
cmp esi, 0x10
jae 0x100392e7
nop
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x10
jb 0x100392c0
mov eax, dword [esp + 0x20]
mov dword [edx + 0x14], ebx
cmp bl, 8
je 0x10039302
mov dword [eax + 0x18], str.6ZSZ6Kv55qE5Y6L57yp5qC85byP
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
test ebx, 0xe000
je 0x1003931d
mov dword [eax + 0x18], str.5YWz6ZSu5YC5pWw5LiN5q2j56Gu
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
mov esi, dword [edx + 0x24]
mov ecx, ebx
shr ecx, 8
mov eax, ebx
test esi, esi
je 0x10039335
mov eax, ecx
and eax, 1
mov dword [esi], eax
mov eax, dword [edx + 0x14]
test eax, 0x200
je 0x10039366
test byte [edx + 0xc], 4
je 0x10039366
mov byte [esp + 0x29], cl
lea edx, [esp + 0x28]
mov ecx, dword [esp + 0x1c]
push 2
mov byte [esp + 0x2c], bl
mov ecx, dword [ecx + 0x1c]
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
xor ebx, ebx
mov dword [edx + 4], 0x3f36
mov dword [esp + 0x14], ebx
xor esi, esi
jmp 0x10039380
cmp esi, 0x20
jae 0x100393a3
nop dword [eax]
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x20
jb 0x10039380
mov eax, dword [edx + 0x24]
test eax, eax
je 0x100393ad
mov dword [eax + 4], ebx
test dword [edx + 0x14], 0x200
je 0x100393f5
test byte [edx + 0xc], 4
je 0x100393f5
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x28]
mov eax, ebx
mov byte [esp + 0x28], bl
shr eax, 8
mov byte [esp + 0x29], al
mov eax, ebx
mov ecx, dword [ecx + 0x1c]
shr eax, 0x10
shr ebx, 0x18
push 4
mov byte [esp + 0x2e], al
mov byte [esp + 0x2f], bl
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
xor ebx, ebx
mov dword [edx + 4], 0x3f37
mov dword [esp + 0x14], ebx
xor esi, esi
jmp 0x10039410
cmp esi, 0x10
jae 0x10039433
nop dword [eax + eax]
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x10
jb 0x10039410
mov esi, dword [edx + 0x24]
mov ecx, ebx
shr ecx, 8
test esi, esi
je 0x1003944b
movzx eax, bl
mov dword [esi + 8], eax
mov eax, dword [edx + 0x24]
mov dword [eax + 0xc], ecx
test dword [edx + 0x14], 0x200
je 0x1003947e
test byte [edx + 0xc], 4
je 0x1003947e
mov byte [esp + 0x29], cl
lea edx, [esp + 0x28]
mov ecx, dword [esp + 0x1c]
push 2
mov byte [esp + 0x2c], bl
mov ecx, dword [ecx + 0x1c]
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
xor ebx, ebx
mov dword [edx + 4], 0x3f38
mov dword [esp + 0x14], ebx
xor esi, esi
test dword [edx + 0x14], 0x400
je 0x10039512
cmp esi, 0x10
jae 0x100394c3
nop dword [eax + eax]
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x10
jb 0x100394a0
mov eax, dword [edx + 0x24]
mov dword [edx + 0x44], ebx
test eax, eax
je 0x100394d0
mov dword [eax + 0x14], ebx
test dword [edx + 0x14], 0x200
je 0x10039506
test byte [edx + 0xc], 4
je 0x10039506
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x28]
mov byte [esp + 0x28], bl
shr ebx, 8
push 2
mov ecx, dword [ecx + 0x1c]
mov byte [esp + 0x2d], bl
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
mov dword [esp + 0x14], 0
xor esi, esi
jmp 0x10039520
mov eax, dword [edx + 0x24]
test eax, eax
je 0x10039520
mov dword [eax + 0x10], 0
mov dword [edx + 4], 0x3f39
mov ecx, dword [edx + 0x14]
test ecx, 0x400
je 0x100395f6
mov eax, dword [edx + 0x44]
mov ebx, ebp
cmp eax, ebp
cmovbe ebx, eax
mov dword [esp + 0x3c], ebx
test ebx, ebx
je 0x100395ee
cmp dword [edx + 0x24], 0
mov edi, dword [esp + 0x18]
mov dword [esp + 0x38], eax
je 0x100395b2
mov ebx, dword [edx + 0x24]
mov dword [esp + 0x38], eax
mov ebx, dword [ebx + 0x10]
test ebx, ebx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x3c]
je 0x100395b2
mov ecx, dword [edx + 0x24]
mov ebx, dword [ecx + 0x14]
mov edi, dword [ecx + 0x18]
sub ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, edi
sub edx, ebx
lea ecx, [eax + ebx]
cmp ecx, edi
mov edi, dword [esp + 0x18]
cmova eax, edx
push eax
mov eax, dword [esp + 0x50]
add eax, ebx
push edi
push eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ebx, dword [esp + 0x3c]
mov eax, dword [edx + 0x44]
mov ecx, dword [edx + 0x14]
mov dword [esp + 0x38], eax
test ecx, 0x200
je 0x100395dd
test byte [edx + 0xc], 4
je 0x100395dd
mov ecx, dword [edx + 0x1c]
test edi, edi
jne 0x100395cb
xor eax, eax
jmp 0x100395da
push ebx
mov edx, edi
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0x38]
add edi, ebx
sub ebp, ebx
mov dword [esp + 0x18], edi
sub eax, ebx
mov dword [edx + 0x44], eax
test eax, eax
jne 0x1003a580
mov ebx, dword [esp + 0x14]
mov dword [edx + 0x44], 0
mov dword [edx + 4], 0x3f3a
test dword [edx + 0x14], 0x800
je 0x100396ce
test ebp, ebp
je 0x1003a580
xor ecx, ecx
nop
mov al, byte [ecx + edi]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edx + 0x24]
mov dword [esp + 0x3c], ecx
test eax, eax
je 0x1003965a
mov ebx, dword [eax + 0x1c]
mov dword [esp + 0x48], ebx
test ebx, ebx
je 0x1003965a
mov ebx, dword [edx + 0x44]
cmp ebx, dword [eax + 0x20]
jae 0x1003965a
mov cl, byte [esp + 0x13]
mov eax, ebx
mov ebx, dword [esp + 0x48]
mov byte [ebx + eax], cl
inc dword [edx + 0x44]
mov ecx, dword [esp + 0x3c]
mov al, byte [esp + 0x13]
test al, al
je 0x10039666
cmp ecx, ebp
jb 0x10039620
test dword [edx + 0x14], 0x200
mov ebx, dword [esp + 0x14]
je 0x100396bc
test byte [edx + 0xc], 4
je 0x100396bc
mov ecx, dword [edx + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x3c]
test edi, edi
jne 0x10039692
mov dword [esp + 0x38], 0
jmp 0x100396ad
push ecx
mov ecx, dword [esp + 0x50]
mov edx, edi
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x13]
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x1c], edi
mov edi, dword [esp + 0x18]
add edi, ecx
sub ebp, ecx
mov dword [esp + 0x18], edi
test al, al
jne 0x1003a580
jmp 0x100396dc
mov eax, dword [edx + 0x24]
test eax, eax
je 0x100396dc
mov dword [eax + 0x1c], 0
mov dword [edx + 0x44], 0
mov dword [edx + 4], 0x3f3b
test dword [edx + 0x14], 0x1000
je 0x100397af
test ebp, ebp
je 0x1003a580
xor ecx, ecx
mov al, byte [ecx + edi]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edx + 0x24]
mov dword [esp + 0x3c], ecx
test eax, eax
je 0x1003973b
mov ebx, dword [eax + 0x24]
mov dword [esp + 0x48], ebx
test ebx, ebx
je 0x1003973b
mov ebx, dword [edx + 0x44]
cmp ebx, dword [eax + 0x28]
jae 0x1003973b
mov cl, byte [esp + 0x13]
mov eax, ebx
mov ebx, dword [esp + 0x48]
mov byte [eax + ebx], cl
inc dword [edx + 0x44]
mov ecx, dword [esp + 0x3c]
mov al, byte [esp + 0x13]
test al, al
je 0x10039747
cmp ecx, ebp
jb 0x10039701
test dword [edx + 0x14], 0x200
mov ebx, dword [esp + 0x14]
je 0x1003979d
test byte [edx + 0xc], 4
je 0x1003979d
mov ecx, dword [edx + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x3c]
test edi, edi
jne 0x10039773
mov dword [esp + 0x38], 0
jmp 0x1003978e
push ecx
mov ecx, dword [esp + 0x50]
mov edx, edi
call fcn.10035d90
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x13]
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x1c], edi
mov edi, dword [esp + 0x18]
add edi, ecx
sub ebp, ecx
mov dword [esp + 0x18], edi
test al, al
jne 0x1003a580
jmp 0x100397bd
mov eax, dword [edx + 0x24]
test eax, eax
je 0x100397bd
mov dword [eax + 0x24], 0
mov dword [edx + 4], 0x3f3c
mov ecx, dword [edx + 0x14]
test ecx, 0x200
je 0x10039827
cmp esi, 0x10
jae 0x100397fa
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x10
jb 0x100397d4
mov ecx, dword [edx + 0x14]
test byte [edx + 0xc], 4
je 0x1003981f
movzx eax, word [edx + 0x1c]
cmp ebx, eax
je 0x1003981f
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5paH5Lu25aS0Y3Jj5LiN5Yy56YWN
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x14], ebx
mov eax, dword [edx + 0x24]
test eax, eax
je 0x10039841
sar ecx, 9
and ecx, 1
mov dword [eax + 0x2c], ecx
mov eax, dword [edx + 0x24]
mov dword [eax + 0x30], 1
mov ecx, dword [esp + 0x20]
mov dword [edx + 0x1c], 0
mov dword [ecx + 0x30], 0
mov dword [edx + 4], 0x3f3f
jmp 0x1003a0a6
cmp esi, 0x20
jae 0x10039887
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x20
jb 0x10039864
mov ecx, ebx
mov eax, ebx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add eax, ecx
shr ebx, 0x18
mov ecx, dword [esp + 0x20]
add eax, ebx
mov dword [edx + 0x1c], eax
xor ebx, ebx
mov dword [esp + 0x14], ebx
xor esi, esi
mov dword [ecx + 0x30], eax
mov eax, ecx
mov dword [edx + 4], 0x3f3e
cmp dword [edx + 0x10], 0
je 0x1003a531
mov dword [edx + 0x1c], 1
mov dword [eax + 0x30], 1
mov dword [edx + 4], 0x3f3f
cmp dword [edx + 8], 0
je 0x10039903
mov ecx, esi
mov dword [edx + 4], 0x3f4e
and ecx, 7
shr ebx, cl
sub esi, ecx
mov dword [esp + 0x14], ebx
jmp 0x1003a0a6
cmp esi, 3
jae 0x1003992b
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 3
jb case.default.0x1003993a
mov eax, ebx
shr ebx, 1
and eax, 1
mov dword [edx + 8], eax
mov eax, ebx
and eax, 3
jmp dword [eax*4 + 0x1003a738]
shr ebx, 2
sub esi, 3
mov dword [edx + 4], 0x3f41
mov dword [esp + 0x14], ebx
jmp 0x1003a0a6
shr ebx, 2
sub esi, 3
mov dword [edx + 0x50], 0x1007c040
mov dword [edx + 0x58], 9
mov dword [edx + 0x54], 0x1007c840
mov dword [edx + 0x5c], 5
mov dword [edx + 4], 0x3f47
mov dword [esp + 0x14], ebx
jmp 0x1003a0a6
shr ebx, 2
sub esi, 3
mov dword [edx + 4], 0x3f44
mov dword [esp + 0x14], ebx
jmp 0x1003a0a6
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5YC5pWw6ZSZ6Kv
mov dword [edx + 4], 0x3f51
shr ebx, 2
sub esi, 3
mov dword [esp + 0x14], ebx
jmp 0x1003a0a6
mov ecx, esi
and ecx, 7
shr ebx, cl
sub esi, ecx
mov dword [esp + 0x14], ebx
cmp esi, 0x20
jae 0x100399f5
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x20
jb 0x100399d2
mov eax, ebx
movzx ecx, bx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x10039a1a
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5YC5pWw6ZSZ6Kv
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
xor ebx, ebx
mov dword [edx + 0x44], ecx
mov dword [esp + 0x14], ebx
xor esi, esi
mov dword [edx + 4], 0x3f43
mov ecx, dword [edx + 0x44]
test ecx, ecx
je 0x10039853
cmp ecx, ebp
mov eax, ebp
cmovbe eax, ecx
mov ecx, dword [esp + 0x24]
cmp eax, ecx
cmovbe ecx, eax
mov dword [esp + 0x4c], ecx
test ecx, ecx
je 0x1003a580
push ecx
mov ecx, dword [esp + 0x30]
push edi
push ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x58]
add esp, 0xc
mov edx, dword [esp + 0x1c]
add edi, eax
sub dword [esp + 0x24], eax
sub ebp, eax
add dword [esp + 0x2c], eax
mov dword [esp + 0x18], edi
sub dword [edx + 0x44], eax
jmp 0x1003a0a6
cmp esi, 0xe
jae 0x10039aaa
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0xe
jb 0x10039a87
mov ecx, ebx
sub esi, 0xe
shr ebx, 5
and ecx, 0x1f
mov eax, ebx
add ecx, 0x101
and eax, 0x1f
shr ebx, 5
inc eax
mov dword [edx + 0x64], ecx
mov dword [esp + 0x4c], eax
mov dword [edx + 0x68], eax
mov eax, ebx
and eax, 0xf
shr ebx, 4
add eax, 4
mov dword [esp + 0x14], ebx
mov dword [edx + 0x60], eax
cmp ecx, 0x11e
ja 0x10039a03
cmp dword [esp + 0x4c], 0x1e
ja 0x10039a03
mov dword [edx + 0x6c], 0
mov dword [edx + 4], 0x3f45
mov eax, dword [edx + 0x6c]
cmp eax, dword [edx + 0x60]
jae 0x10039b62
nop dword [eax]
cmp esi, 3
jae 0x10039b38
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 3
jb 0x10039b15
mov eax, dword [edx + 0x6c]
mov ecx, ebx
and ecx, 7
shr ebx, 3
sub esi, 3
mov dword [esp + 0x14], ebx
movzx eax, word [eax*2 + 0x1007c8c0]
mov word [edx + eax*2 + 0x74], cx
inc dword [edx + 0x6c]
mov eax, dword [edx + 0x6c]
cmp eax, dword [edx + 0x60]
jb 0x10039b10
cmp eax, 0x13
jae 0x10039b8b
nop word [eax + eax]
mov eax, dword [edx + 0x6c]
xor ecx, ecx
movzx eax, word [eax*2 + 0x1007c8c0]
mov word [edx + eax*2 + 0x74], cx
inc dword [edx + 0x6c]
cmp dword [edx + 0x6c], 0x13
jb 0x10039b70
mov ecx, dword [esp + 0x1c]
lea eax, [edx + 0x534]
add edx, 0x70
mov dword [ecx + 0x50], eax
mov dword [edx], eax
mov eax, ecx
lea ecx, [eax + 0x58]
add eax, 0x2f4
mov dword [ecx], 7
push eax
push ecx
push edx
mov edx, dword [esp + 0x28]
xor ecx, ecx
push 0x13
lea edx, [edx + 0x74]
call fcn.1003de20
mov edx, dword [esp + 0x2c]
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
jne 0x10039a03
mov dword [edx + 0x6c], eax
mov dword [edx + 4], 0x3f46
mov dword [esp + 0x3c], 0x3f46
mov eax, dword [edx + 0x68]
mov ecx, dword [edx + 0x64]
add eax, ecx
cmp dword [edx + 0x6c], eax
jae 0x10039e1c
mov ecx, dword [edx + 0x58]
mov eax, 1
shl eax, cl
mov ecx, dword [edx + 0x50]
dec eax
mov dword [esp + 0x4c], eax
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
shr dword [esp + 0x38], 0x10
movzx ecx, cl
cmp ecx, esi
jbe 0x10039c69
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
mov ecx, dword [edx + 0x50]
add ebx, eax
mov eax, dword [esp + 0x4c]
add esi, 8
and eax, ebx
mov dword [esp + 0x14], ebx
dec ebp
mov dword [esp + 0x18], edi
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
shr dword [esp + 0x38], 0x10
movzx ecx, cl
cmp ecx, esi
ja 0x10039c26
mov ecx, dword [esp + 0x38]
movzx ecx, cx
mov dword [esp + 0x4c], ecx
movzx ecx, cx
cmp ecx, 0x10
mov ecx, dword [esp + 0x3c]
movzx ecx, cl
jae 0x10039ca1
shr ebx, cl
sub esi, ecx
mov ecx, dword [edx + 0x6c]
shr eax, 0x10
mov dword [esp + 0x14], ebx
mov word [edx + ecx*2 + 0x74], ax
inc dword [edx + 0x6c]
mov ecx, dword [edx + 0x6c]
jmp 0x10039dfe
jne 0x10039d0e
add ecx, 2
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x10039cd8
nop
test ebp, ebp
je 0x1003a57c
movzx edx, byte [edi]
mov ecx, esi
shl edx, cl
inc edi
add ebx, edx
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, dword [esp + 0x4c]
jb 0x10039cb0
mov edx, dword [esp + 0x1c]
movzx ecx, ah
mov eax, dword [edx + 0x6c]
sub esi, ecx
shr ebx, cl
mov dword [esp + 0x14], ebx
test eax, eax
je 0x10039a03
movzx eax, word [edx + eax*2 + 0x72]
mov ecx, ebx
and ecx, 3
shr ebx, 2
add ecx, 3
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
sub esi, 2
jmp 0x10039dbd
cmp word [esp + 0x4c], 0x11
jne 0x10039d64
add ecx, 3
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x10039d49
test ebp, ebp
je 0x1003a57c
movzx edx, byte [edi]
mov ecx, esi
shl edx, cl
inc edi
add ebx, edx
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, dword [esp + 0x4c]
jb 0x10039d21
mov edx, dword [esp + 0x1c]
movzx ecx, ah
shr ebx, cl
mov eax, ebx
and eax, 7
add eax, 3
shr ebx, 3
mov dword [esp + 0x3c], eax
mov eax, 0xfffffffd
jmp 0x10039db1
add ecx, 7
mov dword [esp + 0x4c], ecx
cmp esi, ecx
jae 0x10039d98
nop
test ebp, ebp
je 0x1003a57c
movzx edx, byte [edi]
mov ecx, esi
shl edx, cl
inc edi
add ebx, edx
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, dword [esp + 0x4c]
jb 0x10039d70
mov edx, dword [esp + 0x1c]
movzx ecx, ah
shr ebx, cl
mov eax, ebx
and eax, 0x7f
add eax, 0xb
shr ebx, 7
mov dword [esp + 0x3c], eax
mov eax, 0xfffffff9
sub eax, ecx
mov dword [esp + 0x38], 0
add esi, eax
mov ecx, dword [edx + 0x6c]
mov eax, dword [edx + 0x68]
add ecx, dword [esp + 0x3c]
add eax, dword [edx + 0x64]
mov dword [esp + 0x14], ebx
cmp ecx, eax
ja 0x10039a03
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
nop
mov eax, dword [edx + 0x6c]
mov word [edx + eax*2 + 0x74], bx
mov ecx, dword [edx + 0x6c]
lea ecx, [ecx + 1]
mov dword [edx + 0x6c], ecx
sub edi, 1
jne 0x10039de0
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov eax, dword [edx + 0x64]
mov dword [esp + 0x4c], eax
mov eax, dword [edx + 0x68]
add eax, dword [esp + 0x4c]
cmp ecx, eax
jb 0x10039bf6
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x64]
jmp 0x10039e20
mov eax, dword [esp + 0x3c]
cmp eax, 0x3f51
je 0x1003a0a6
cmp word [edx + 0x274], 0
je 0x10039a03
lea edi, [edx + 0x70]
mov dword [edx + 0x58], 9
lea eax, [edx + 0x534]
mov dword [esp + 0x4c], edi
lea edi, [edx + 0x2f4]
mov dword [edx + 0x70], eax
mov dword [edx + 0x50], eax
lea eax, [edx + 0x58]
push edi
push eax
lea eax, [edx + 0x70]
mov dword [esp + 0x50], edi
push eax
push ecx
add edx, 0x74
mov ecx, 1
call fcn.1003de20
mov edi, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
je 0x10039e8c
mov edx, dword [esp + 0x1c]
jmp 0x10039a03
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x4c]
push dword [esp + 0x48]
mov dword [ecx + 0x5c], 6
mov eax, dword [edx]
mov dword [ecx + 0x54], eax
lea eax, [ecx + 0x5c]
push eax
mov eax, dword [ecx + 0x64]
push edx
push dword [ecx + 0x68]
add ecx, 0x74
lea edx, [ecx + eax*2]
mov ecx, 2
call fcn.1003de20
mov edx, dword [esp + 0x2c]
add esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
jne 0x10039a03
mov eax, dword [esp + 0x20]
mov dword [edx + 4], 0x3f48
cmp ebp, 6
jb 0x10039f55
cmp dword [esp + 0x24], 0x102
jb 0x10039f55
mov ecx, dword [esp + 0x2c]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 0x10], ecx
mov ecx, eax
mov dword [eax], edi
mov dword [eax + 4], ebp
mov dword [edx + 0x3c], ebx
mov dword [edx + 0x40], esi
mov edx, dword [esp + 0x30]
call fcn.1003e3a0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 0xc]
cmp dword [edx + 4], 0x3f3f
mov edi, dword [eax]
mov ebx, dword [edx + 0x3c]
mov ebp, dword [eax + 4]
mov esi, dword [edx + 0x40]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
jne 0x1003a0a6
mov dword [edx + 0x1bc8], 0xffffffff
jmp 0x1003a0a6
mov ecx, dword [edx + 0x58]
mov eax, 1
shl eax, cl
mov ecx, dword [edx + 0x50]
dec eax
mov dword [esp + 0x4c], eax
and eax, ebx
mov dword [esp + 0x38], ecx
mov dword [edx + 0x1bc8], 0
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x10039fbc
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
mov ecx, dword [edx + 0x50]
add ebx, eax
mov eax, dword [esp + 0x4c]
add esi, 8
and eax, ebx
mov dword [esp + 0x14], ebx
dec ebp
mov dword [esp + 0x18], edi
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x10039f86
test al, al
je 0x1003a079
test al, 0xf0
jne 0x1003a079
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x3c], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x38]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x1003a064
nop dword [eax]
test ebp, ebp
je 0x1003a57c
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x3e]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x1003a010
mov ebx, dword [esp + 0x14]
movzx ecx, dh
mov edx, dword [esp + 0x1c]
shr ebx, cl
sub esi, ecx
mov dword [edx + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [edx + 0x1bc8], ecx
sub esi, ecx
shr ebx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x14], ebx
mov dword [edx + 0x44], ecx
test al, al
jne 0x1003a0c7
mov dword [edx + 4], 0x3f4d
mov edi, dword [esp + 0x18]
mov eax, dword [edx + 4]
mov dword [esp + 0x3c], eax
lea ecx, [eax - 0x3f34]
cmp ecx, 0x1f
ja case.0x1003a0c0.16211
mov eax, dword [esp + 0x20]
jmp dword [ecx*4 + 0x1003a6b8]
test al, 0x20
je 0x1003a0de
mov dword [edx + 0x1bc8], 0xffffffff
mov dword [edx + 4], 0x3f3f
jmp 0x1003a0a2
test al, 0x40
je 0x1003a0f6
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x18], str.5YC5pWw6ZSZ6Kv
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a2
movzx eax, al
and eax, 0xf
mov dword [edx + 4], 0x3f49
mov dword [edx + 0x4c], eax
mov edi, dword [edx + 0x4c]
test edi, edi
je 0x1003a158
cmp esi, edi
jae 0x1003a13b
mov edx, dword [esp + 0x18]
test ebp, ebp
je 0x1003a57c
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
add ebx, eax
mov dword [esp + 0x18], edx
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, edi
jb 0x1003a115
mov edx, dword [esp + 0x1c]
mov ecx, edi
mov eax, 1
shl eax, cl
sub esi, edi
dec eax
and eax, ebx
shr ebx, cl
add dword [edx + 0x44], eax
add dword [edx + 0x1bc8], edi
mov dword [esp + 0x14], ebx
mov eax, dword [edx + 0x44]
mov dword [edx + 0x1bcc], eax
mov dword [edx + 4], 0x3f4a
mov ecx, dword [edx + 0x5c]
mov eax, 1
mov edi, dword [edx + 0x54]
shl eax, cl
dec eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x4c], eax
and eax, ebx
mov eax, dword [edi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x1003a1ca
mov edx, dword [esp + 0x18]
test ebp, ebp
je 0x1003a57c
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
add ebx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x4c]
add esi, 8
and eax, ebx
mov dword [esp + 0x14], ebx
dec ebp
mov eax, dword [edi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x1003a193
mov edx, dword [esp + 0x1c]
test al, 0xf0
jne 0x1003a279
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x3c], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x38]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x1003a264
nop
test ebp, ebp
je 0x1003a57c
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x3e]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x1003a210
mov ebx, dword [esp + 0x14]
movzx ecx, dh
mov edx, dword [esp + 0x1c]
sub esi, ecx
shr ebx, cl
add dword [edx + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [edx + 0x1bc8], ecx
sub esi, ecx
shr ebx, cl
mov dword [esp + 0x14], ebx
test al, 0x40
jne 0x1003a0e2
mov ecx, eax
mov dword [edx + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [edx + 0x48], ecx
mov dword [edx + 0x4c], eax
mov edi, dword [edx + 0x4c]
test edi, edi
je 0x1003a303
cmp esi, edi
jae 0x1003a2e6
mov edx, dword [esp + 0x18]
nop
test ebp, ebp
je 0x1003a57c
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
add ebx, eax
mov dword [esp + 0x18], edx
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, edi
jb 0x1003a2c0
mov edx, dword [esp + 0x1c]
mov ecx, edi
mov eax, 1
shl eax, cl
sub esi, edi
dec eax
and eax, ebx
shr ebx, cl
add dword [edx + 0x48], eax
add dword [edx + 0x1bc8], edi
mov dword [esp + 0x14], ebx
mov dword [edx + 4], 0x3f4c
mov eax, dword [esp + 0x24]
test eax, eax
je 0x1003a580
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov eax, dword [edx + 0x48]
cmp eax, ecx
jbe 0x1003a36b
sub eax, ecx
cmp eax, dword [edx + 0x30]
jbe 0x1003a337
cmp dword [edx + 0x1bc4], 0
jne 0x1003a0e2
mov ecx, dword [edx + 0x34]
cmp eax, ecx
jbe 0x1003a34a
mov edi, dword [edx + 0x2c]
sub eax, ecx
sub edi, eax
add edi, dword [edx + 0x38]
jmp 0x1003a351
mov edi, dword [edx + 0x38]
sub edi, eax
add edi, ecx
mov ecx, dword [edx + 0x44]
cmp eax, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x3c], ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], ecx
jmp 0x1003a378
mov edi, dword [esp + 0x2c]
sub edi, eax
mov eax, dword [edx + 0x44]
mov dword [esp + 0x3c], eax
mov ebx, dword [esp + 0x24]
mov ecx, ebx
cmp dword [esp + 0x3c], ebx
cmovbe ecx, dword [esp + 0x3c]
sub ebx, ecx
sub eax, ecx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x2c]
sub edi, ebx
mov dword [edx + 0x44], eax
mov al, byte [edi + ebx]
mov byte [ebx], al
inc ebx
sub ecx, 1
jne 0x1003a398
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x14]
cmp dword [edx + 0x44], ecx
jne 0x1003a0a2
mov dword [edx + 4], 0x3f48
jmp 0x1003a0a2
cmp dword [esp + 0x24], 0
je 0x1003a580
mov ecx, dword [esp + 0x2c]
mov al, byte [edx + 0x44]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x24]
mov dword [esp + 0x2c], ecx
mov dword [edx + 4], 0x3f48
jmp 0x1003a0a6
cmp dword [edx + 0xc], 0
je 0x1003a4d6
cmp esi, 0x20
jae 0x1003a41f
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x20
jb 0x1003a3f8
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x24]
add dword [eax + 0x14], ecx
add dword [edx + 0x20], ecx
mov eax, dword [edx + 0xc]
mov dword [esp + 0x30], ecx
test al, 4
je 0x1003a47b
test ecx, ecx
je 0x1003a47b
mov eax, dword [esp + 0x2c]
sub eax, ecx
cmp dword [edx + 0x14], 0
mov ecx, dword [edx + 0x1c]
je 0x1003a45c
test eax, eax
je 0x1003a46e
push dword [esp + 0x30]
mov edx, eax
call fcn.10035d90
jmp 0x1003a467
push dword [esp + 0x30]
mov edx, eax
call fcn.1003dbb0
mov edx, dword [esp + 0x20]
add esp, 4
mov ecx, dword [esp + 0x20]
mov dword [edx + 0x1c], eax
mov dword [ecx + 0x30], eax
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], ecx
test al, 4
je 0x1003a4ce
cmp dword [edx + 0x14], 0
mov ecx, ebx
jne 0x1003a4b2
and ecx, 0xff00
mov eax, ebx
shl eax, 0x10
add ecx, eax
mov eax, ebx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, ebx
shr eax, 0x18
add ecx, eax
cmp ecx, dword [edx + 0x1c]
je 0x1003a4ce
mov eax, dword [esp + 0x20]
mov dword [eax + 0x18], str.5YC5pWw6ZSZ6Kv
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x14], ebx
mov dword [edx + 4], 0x3f4f
cmp dword [edx + 0xc], 0
je 0x1003a561
cmp dword [edx + 0x14], 0
je 0x1003a561
cmp esi, 0x20
jae 0x1003a515
test ebp, ebp
je 0x1003a580
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add ebx, eax
mov dword [esp + 0x18], edi
add esi, 8
mov dword [esp + 0x14], ebx
dec ebp
cmp esi, 0x20
jb 0x1003a4f2
cmp ebx, dword [edx + 0x20]
je 0x1003a557
mov eax, dword [esp + 0x20]
mov dword [eax + 0x18], str.5YC5pWw6ZSZ6Kv
mov dword [edx + 4], 0x3f51
jmp 0x1003a0a6
mov ecx, dword [esp + 0x2c]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax], edi
mov dword [eax + 4], ebp
mov dword [eax + 0x10], ecx
mov eax, 2
pop edi
mov dword [edx + 0x40], esi
pop esi
pop ebp
mov dword [edx + 0x3c], ebx
pop ebx
add esp, 0x40
ret
mov dword [esp + 0x14], 0
xor esi, esi
mov dword [edx + 4], 0x3f50
mov dword [esp + 0x34], 1
jmp 0x1003a580
mov dword [esp + 0x34], 0xfffffffd
jmp 0x1003a580
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [ebx + 4], ebp
cmp dword [edx + 0x2c], 0
mov ebp, dword [esp + 0x30]
mov dword [edx + 0x3c], eax
mov dword [edx + 0x40], esi
jne 0x1003a5bd
cmp ebp, dword [ebx + 0x10]
je 0x1003a5f0
cmp dword [edx + 4], 0x3f51
jge 0x1003a5f0
mov edx, dword [ebx + 0xc]
mov eax, ebp
sub eax, dword [ebx + 0x10]
mov ecx, ebx
push eax
call fcn.10038f60
add esp, 4
test eax, eax
je 0x1003a5ec
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 4], 0x3f52
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x40
ret
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
sub eax, dword [ebx + 4]
sub ebp, dword [ebx + 0x10]
add dword [ebx + 8], eax
add dword [ebx + 0x14], ebp
add dword [edx + 0x20], ebp
test byte [edx + 0xc], 4
mov dword [esp + 0x40], eax
je 0x1003a642
test ebp, ebp
je 0x1003a642
mov eax, dword [ebx + 0xc]
mov ecx, dword [edx + 0x1c]
sub eax, ebp
cmp dword [edx + 0x14], 0
je 0x1003a62d
test eax, eax
je 0x1003a63c
push ebp
mov edx, eax
call fcn.10035d90
jmp 0x1003a635
push ebp
mov edx, eax
call fcn.1003dbb0
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx + 0x1c], eax
mov dword [ebx + 0x30], eax
mov esi, dword [edx + 4]
cmp esi, 0x3f47
je 0x1003a659
cmp esi, 0x3f42
je 0x1003a659
xor edi, edi
jmp 0x1003a65e
mov edi, 0x100
mov ecx, dword [edx + 8]
neg ecx
mov dword [esp + 0x4c], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp esi, 0x3f3f
cmove eax, dword [esp + 0x4c]
add ecx, eax
mov eax, dword [esp + 0x34]
add ecx, dword [edx + 0x40]
add ecx, edi
cmp dword [esp + 0x40], 0
mov dword [ebx + 0x2c], ecx
jne 0x1003a6ad
test ebp, ebp
jne 0x1003a6ad
pop edi
pop esi
test eax, eax
mov ecx, 0xfffffffb
pop ebp
cmove eax, ecx
pop ebx
add esp, 0x40
ret
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret