Function at 0x10031710
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x40
mov eax, dword [0x1026f864]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x34], ecx
test byte [ecx + 0x448], 0x10
jne 0x10031a1b
mov eax, dword [edx + 0xb0]
mov ebx, dword [ebp + 0xc]
mov edi, 0x80000000
mov dword [ebp - 0x1c], edx
mov ecx, dword [eax + 4]
cmp dword [eax], 0
mov dword [ebp - 0x4c], ecx
jne 0x100317ef
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x10]
mov esi, eax
xor esi, edi
or esi, ecx
je 0x100317ef
mov edi, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
xor edi, ecx
xor esi, eax
or esi, edi
jne 0x100317c1
mov ebx, dword [edx + 0x2a4]
mov esi, dword [edx + 0x2a0]
mov edx, 0x80000000
mov edi, ebx
xor edi, edx
mov edx, dword [ebp - 0x1c]
or edi, esi
je 0x100317c1
cmp ecx, esi
sbb eax, ebx
jl 0x10031ecc
mov cl, byte [edx + 0x2a8]
mov al, byte [edx + 0x2a9]
inc cl
mov byte [edx + 0x2a8], cl
movzx edi, cl
movzx esi, al
add esi, edi
cmp esi, 0xfb
jae 0x10031ba7
mov ebx, dword [ebp + 0xc]
mov edi, 0x80000000
movsd xmm0, qword [ebx + 0x10]
movsd qword [edx + 0x2a0], xmm0
movzx ecx, byte [edx + 0x2a9]
movzx eax, byte [edx + 0x2a8]
shl ecx, 3
cmp ecx, eax
ja 0x10031ea9
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp + 8]
test byte [eax + 0x448], 8
jne 0x10031c54
test ecx, ecx
jne 0x10031c71
mov eax, dword [edx + 0x2b8]
test ecx, ecx
mov dword [ebp - 0x30], 0
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x8c]
je 0x10031840
test eax, eax
mov esi, 0
je 0x10031842
cmp dword [ecx + 0x20], 3
mov ecx, 0
setne cl
mov esi, ecx
mov dword [ebp - 0x30], ecx
jmp 0x10031842
xor esi, esi
mov dword [ebp - 0x24], esi
mov esi, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], esi
xor esi, edi
or esi, ecx
je 0x10031ca0
mov esi, dword [ebx + 0x10]
mov ebx, dword [ebx + 0x14]
mov eax, ebx
xor eax, edi
or eax, esi
je 0x10031878
mov eax, dword [edx + 0xb8]
cmp eax, 0x3e
jle 0x10031cae
cmp dword [ebp - 0x38], 1
mov edi, dword [ebp + 0xc]
je 0x10031d41
mov edx, dword [edi + 0x30]
xor eax, eax
mov esi, dword [ebp - 0x1c]
mov ecx, edx
neg ecx
sbb eax, dword [edi + 0x34]
setl bl
push dword [esi + 0x14]
push dword [esi + 0x10]
push 1
mov dword [ebp - 0x20], edx
push edx
call fcn.10066040
add esp, 0x10
test bl, bl
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x3c], edx
je 0x10031ae9
mov ebx, edi
mov edi, 0x80000000
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 0x50c]
mov edx, dword [eax + 4]
test edx, edx
jne 0x10031bbc
mov edx, dword [eax + 0x20]
test edx, edx
jne 0x10031bbc
cmp dword [ebp + 8], 0
jne 0x10031db7
mov esi, dword [ebx + 0x14]
mov eax, dword [ebx + 0x10]
mov ecx, esi
mov edx, eax
xor ecx, edi
or edx, ecx
je 0x1003190d
xor edx, edx
mov edi, esi
inc edx
cmp eax, dword [ebx + 8]
sbb edi, dword [ebx + 0xc]
mov edi, dword [ebp - 0x24]
cmovl edi, edx
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x38]
cmp edi, 1
sete dl
cmp dword [ebp + 8], 0
setne dh
test edi, edi
mov edi, dword [ebp - 0x1c]
je 0x10031a2d
and dh, dl
jne 0x10031a2d
mov esi, dword [ebp - 0x38]
cmp esi, 0x10
jg 0x10031992
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov edx, 0x80000000
xor edx, ecx
or edx, eax
je 0x10031992
test esi, esi
mov dword [edi + 0x100], eax
mov dword [edi + 0x104], ecx
jg 0x10031e46
mov eax, dword [edi + 0xb0]
cmp dword [eax + 4], 0x1b
jne 0x10031976
cmp dword [edi + 0xb4], 0
jne 0x10031b74
lea edx, [edi + 0x100]
mov ecx, edi
push dword [ebx + 0x14]
push dword [ebx + 0x10]
call fcn.10032720
add esp, 8
mov dword [ebx + 0x14], edx
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x4c]
cmp eax, 0xad
je 0x100319a1
cmp eax, 0x1b
jne 0x100319bc
mov edx, dword [ebx + 0x20]
mov ecx, dword [ebp - 0x34]
push ebx
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebx + 0x14]
push dword [ebx + 0x10]
call fcn.10032330
add esp, 0x14
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
mov edx, dword [edi + 0xcc]
mov esi, dword [ebp + 8]
cmp dword [edi + 0xc8], eax
sbb edx, ecx
jge 0x100319e1
mov dword [edi + 0xc8], eax
mov dword [edi + 0xcc], ecx
mov eax, dword [edi + 0xb0]
cmp dword [eax], 2
je 0x10031b6b
push dword [eax + 4]
call sym.ffmpeg.dll_avcodec_descriptor_get
add esp, 4
test eax, eax
je 0x10031a13
cmp dword [eax + 4], 1
ja 0x10031b6b
test byte [eax + 0x10], 1
jne 0x10031b6b
test esi, esi
jne 0x10031e97
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101e05ab
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [ebp - 0x4c], 0x1b
je 0x10031930
cmp dword [ebp - 0x4c], 0xad
je 0x10031930
cmp dword [ebp - 0x24], 0
jne 0x10031f0d
mov edx, dword [ebx + 8]
mov edi, 0x80000000
mov dword [ebp - 0x24], edx
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0x20], edx
xor edx, edi
or edx, dword [ebp - 0x24]
je 0x1003202b
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebx + 0x20]
push ebx
mov esi, dword [ebp - 0x20]
push esi
mov eax, dword [ebp - 0x24]
push eax
push esi
push eax
call fcn.10032330
add esp, 0x14
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov edi, 0x80000000
mov esi, 0x80000000
mov edx, ecx
xor edx, edi
or edx, eax
je 0x10032053
cmp dword [ebp - 0x30], 0
mov edi, dword [ebp - 0x1c]
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], ecx
js 0x10031930
mov edx, ecx
xor edx, esi
or edx, eax
je 0x10031930
push 0
push 1
push dword [ebp - 0x3c]
push dword [ebp - 0x30]
push ecx
push eax
push dword [edi + 0x14]
push dword [edi + 0x10]
call fcn.10061f10
add esp, 0x20
mov dword [edi + 0xcc], edx
mov dword [edi + 0xc8], eax
jmp 0x10031930
lea ebx, [ebp - 0x18]
lea eax, [ebp - 0x14]
push edi
push dword [ebp + 8]
push esi
push ebx
push eax
push dword [ebp - 0x34]
call fcn.10029660
add esp, 0x18
mov edi, dword [ebx]
test edi, edi
je 0x10031b9c
mov ebx, dword [ebp - 0x14]
test ebx, ebx
je 0x10031b9c
mov ecx, dword [ebp - 0x1c]
mov eax, edi
imul dword [ecx + 0x10]
mov dword [ebp - 0x30], eax
mov eax, ebx
mov esi, edx
imul dword [ecx + 0x14]
push 2
push esi
push dword [ebp - 0x30]
push edx
push eax
push 0
push 1
call fcn.10061a20
add esp, 0x1c
mov esi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x3c], edi
mov ebx, esi
mov dword [esi + 0x34], edx
mov dword [esi + 0x30], ecx
mov esi, dword [ebp - 0x1c]
cmp ecx, 1
mov edi, 0x80000000
mov dword [ebp - 0x20], ecx
sbb edx, 0
jge 0x100318c0
jmp 0x100318df
or byte [ebx + 0x24], 1
jmp 0x10031a13
mov eax, dword [edi + 0x2b8]
mov eax, dword [eax + 0xc]
cmp dword [eax + 0x8c], 0
jne 0x10032113
cmp dword [edi + 0x1e0], 6
jg 0x10031976
jmp 0x10031992
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebx + 0x34]
jmp 0x10031b4f
shr cl, 1
shr al, 1
mov byte [edx + 0x2a8], cl
mov byte [edx + 0x2a9], al
jmp 0x100317c1
mov eax, dword [esi + 0xc4]
mov ecx, ebx
mov ebx, dword [esi + 0xc0]
mov edi, esi
mov esi, 0x80000000
mov dword [ebp - 0x28], eax
xor eax, esi
or eax, ebx
mov eax, dword [ecx + 0x20]
jne 0x10032232
mov esi, dword [edi + 0xc8]
mov edi, dword [edi + 0xcc]
mov ecx, 0x7ffeffff
xor edi, ecx
not esi
or esi, edi
jne 0x1003223e
mov edi, dword [ebp - 0x20]
xor esi, esi
dec esi
mov dword [ebp - 0x2c], esi
sar edi, 0x1f
cmp dword [edx + 0x20], eax
je 0x1003215c
mov ebx, dword [edx + 0x48]
test ebx, ebx
jne 0x10031c2f
mov esi, dword [ebp - 0x34]
mov ebx, dword [esi + 0x50c]
cmp dword [ebx + 8], edx
jne 0x10032219
mov ebx, dword [ebx + 0x20]
test ebx, ebx
mov edx, ebx
mov ebx, dword [ebp + 0xc]
jne 0x10031c0a
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
mov dword [esi + 0xc8], eax
mov dword [esi + 0xcc], ecx
mov edi, 0x80000000
jmp 0x100318df
mov eax, dword [ebx + 0xc]
xor eax, edi
or eax, dword [ebx + 8]
je 0x10031802
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x10], 0
jmp 0x10031802
cmp dword [ecx + 0x20], 3
jne 0x1003180a
mov eax, dword [edx + 0x2b8]
mov eax, dword [eax + 0xc]
cmp dword [eax + 0x8c], 0
jne 0x1003180a
mov dword [eax + 0x8c], 1
jmp 0x1003180a
xor ecx, ecx
mov dword [ebp - 0x3c], 0x80000000
jmp 0x10031878
mov edx, eax
mov dword [ebp - 0x20], ecx
dec dl
xor edi, edi
dec edi
mov ecx, edx
shl edi, cl
xor ecx, ecx
test dl, 0x20
mov edx, 0xffffffff
cmove ecx, edi
cmovne edx, edi
mov edi, dword [ebp - 0x3c]
add ecx, esi
adc edx, ebx
cmp dword [ebp - 0x20], ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], edx
sbb edi, edx
jge 0x10031f05
mov edx, dword [ebp - 0x1c]
mov edx, dword [edx + 0xcc]
cmp edx, 0x7ffdffff
jg 0x10031ee5
mov ecx, edx
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
cmp dword [edx + 0xc8], edi
sbb ecx, dword [ebp - 0x28]
jl 0x10031ee5
xor edx, edx
xor ebx, ebx
mov ecx, eax
mov esi, dword [ebp - 0x3c]
xor edi, edi
inc edx
shld ebx, edx, cl
shl edx, cl
mov ecx, dword [ebp - 0x20]
test al, 0x20
mov eax, dword [ebp + 0xc]
cmovne ebx, edx
cmovne edx, edi
add ecx, edx
adc esi, ebx
mov dword [eax + 8], ecx
mov dword [ebp - 0x3c], esi
mov dword [eax + 0xc], esi
jmp 0x10031878
mov esi, ecx
mov ecx, dword [edi + 0x14]
mov ebx, dword [ebp - 0x3c]
mov eax, dword [edi + 0x10]
mov edx, 0x80000000
xor ebx, ecx
xor ecx, edx
xor esi, eax
or ecx, eax
setne al
or esi, ebx
jne 0x10031885
mov ecx, dword [ebp - 0x30]
and cl, al
je 0x10031885
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 4]
mov esi, dword [eax]
push str.mov_mp4_m4a_3gp_3g2_mj2
push esi
call fcn.101f2780
add esp, 8
test eax, eax
je 0x10031885
push 0x102266ed
push esi
call fcn.101f2780
add esp, 8
test eax, eax
je 0x10031885
mov eax, 0x80000000
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], eax
jmp 0x10031885
cmp dword [esi + 0xe4], 3
jne 0x100318e9
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x100318e9
mov ecx, eax
sar ecx, 0x1f
push ecx
push eax
push dword [ebx + 0x34]
push dword [ebx + 0x30]
mov eax, dword [ebp + 8]
push dword [eax + 0xbc]
push dword [eax + 0xb8]
call fcn.10061d20
add esp, 0x18
mov esi, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x20], edx
mov edx, ebx
mov ebx, 0x80000000
mov edi, esi
xor edi, ebx
or edi, ecx
je 0x10031e18
add ecx, eax
mov edi, edx
adc esi, dword [ebp - 0x20]
mov dword [edx + 8], ecx
mov dword [edx + 0xc], esi
mov esi, dword [edx + 0x14]
mov ecx, dword [edx + 0x10]
mov ebx, edx
mov edx, 0x80000000
mov edi, esi
xor edi, edx
or edi, ecx
mov edi, 0x80000000
je 0x100318e9
add ecx, eax
adc esi, dword [ebp - 0x20]
mov dword [ebx + 0x10], ecx
mov dword [ebx + 0x14], esi
jmp 0x100318e9
lea edx, [edi + 0x108]
mov dword [ebp - 0x38], edx
mov ebx, dword [ebp - 0x38]
mov ebx, dword [ebx]
mov dword [ebp - 0x24], ebx
mov ebx, dword [ebp - 0x38]
cmp dword [ebp - 0x24], eax
mov ebx, dword [ebx + 4]
mov dword [ebp - 0x30], ebx
sbb ebx, ecx
mov ebx, dword [ebp + 0xc]
jge 0x1003195d
mov dword [edx], eax
mov dword [edx + 4], ecx
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x38]
mov dword [ebx - 8], edx
mov edx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x38]
mov dword [ebx - 4], edx
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp + 0xc]
add edx, 8
dec esi
je 0x1003195d
jmp 0x10031e4c
movsd xmm0, qword [esi + 0xe8]
movsd qword [ebx + 0x40], xmm0
jmp 0x10031a1b
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
xor ecx, dword [ebx + 0xc]
xor eax, dword [ebx + 8]
or eax, ecx
jne 0x100317ef
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x10], 0
jmp 0x100317ef
mov al, byte [edx + 0x2a9]
mov cl, byte [edx + 0x2a8]
inc al
mov byte [edx + 0x2a9], al
jmp 0x100317ad
xor edx, edx
mov ecx, eax
dec edx
mov edi, edx
shl edi, cl
xor ecx, ecx
test al, 0x20
cmove ecx, edi
cmovne edx, edi
add ecx, esi
mov esi, dword [ebp + 0xc]
adc edx, ebx
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edx
mov ecx, dword [ebp - 0x20]
jmp 0x10031878
or ecx, eax
jne 0x10031f29
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp + 0xc]
mov eax, dword [ecx + 0xd0]
mov esi, dword [ecx + 0xd4]
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], esi
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x34]
mov edx, dword [edi + 0x20]
push edi
push dword [edi + 0xc]
push dword [edi + 8]
push esi
push eax
call fcn.10032330
add esp, 0x14
mov esi, dword [edi + 0x14]
mov ecx, dword [edi + 0x10]
mov edx, 0x80000000
mov eax, esi
xor eax, edx
or eax, ecx
jne 0x10031f6e
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax + 0xc8]
mov esi, dword [eax + 0xcc]
mov dword [edx + 0x10], ecx
mov dword [edx + 0x14], esi
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0xd8]
test edx, edx
je 0x1003206d
mov edi, esi
mov eax, 0x80000000
xor edi, eax
or edi, ecx
je 0x10031ff5
mov ebx, edx
mov edi, 0x80000000
sar ebx, 0x1f
setns al
test esi, esi
setns ah
cmp ah, al
sete byte [ebp - 0x24]
add ecx, edx
adc ebx, esi
xor esi, esi
add esi, 0xffffffff
mov esi, 0x80000000
adc esi, 0xffffffff
test ebx, ebx
setns al
cmovns esi, edi
mov edi, ebx
cmp ah, al
setne al
sar edi, 0x1f
test byte [ebp - 0x24], al
mov eax, dword [ebp - 0x1c]
cmove edi, ecx
mov ecx, dword [ebp + 0xc]
cmove esi, ebx
mov ebx, 0x80000000
mov dword [eax + 0xcc], esi
mov dword [eax + 0xc8], edi
mov eax, dword [ecx + 0x14]
xor eax, ebx
or eax, dword [ecx + 0x10]
jne 0x100320a1
mov eax, dword [ebp + 0xc]
mov edx, 0x80000000
mov ecx, dword [eax + 0x30]
mov eax, dword [eax + 0x34]
cmp ecx, edx
sbb eax, 0
jae 0x10032013
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0xd8], ecx
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x1c]
movsd xmm0, qword [ebx + 8]
movsd qword [edi + 0xd0], xmm0
jmp 0x10031930
mov edi, dword [ebp - 0x1c]
or ecx, eax
jne 0x10032042
mov ecx, dword [ebx + 0x34]
cmp dword [ebx + 0x30], 1
sbb ecx, 0
jl 0x10031930
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], esi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], esi
jmp 0x10031a6a
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx + 0xc8]
mov ecx, dword [ecx + 0xcc]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], ecx
jmp 0x10031a9f
mov eax, dword [ebp + 0xc]
xor edx, edx
mov edi, dword [eax + 0x30]
mov ebx, dword [eax + 0x34]
mov eax, 0x80000000
cmp edi, eax
sbb ebx, 0
jae 0x10031f7f
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0xc]
mov edx, edi
mov dword [eax + 0xd8], edi
mov esi, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x10]
jmp 0x10031f7f
mov ecx, dword [ebp + 0xc]
mov ebx, 0x80000000
mov eax, dword [ecx + 0xc]
xor eax, ebx
or eax, dword [ecx + 8]
jne 0x10031ff5
test edx, edx
jle 0x10031ff5
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
mov ebx, 2
sub edi, edx
sbb esi, ecx
add edi, 1
adc esi, 0
xor eax, eax
cmp ebx, edi
sbb eax, esi
jb 0x10031ff5
mov esi, dword [ebp + 0x1c]
mov edi, dword [ebp + 0x18]
mov eax, edx
mov ebx, ecx
xor eax, edi
xor ebx, esi
or ebx, eax
je 0x10031ff5
mov eax, 0x80000000
xor esi, eax
or edi, esi
je 0x10031ff5
mov eax, dword [ebp + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
jmp 0x10031ff5
push eax
call fcn.100fbd00
add esp, 4
mov ecx, dword [edi + 0x2b8]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x8c]
cmp eax, ecx
je 0x10031976
cmp ecx, 2
jle 0x10031b8a
mov eax, dword [edi + 0x1e0]
cmp ecx, 3
jne 0x10032221
mov edi, dword [ebp - 0x1c]
cmp eax, 0x11
jg 0x10031976
jmp 0x10031992
mov esi, dword [edx + 8]
mov ebx, dword [edx + 0xc]
mov dword [ebp - 0x48], esi
mov esi, dword [edx + 0x14]
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], esi
mov esi, ebx
mov ebx, 0x80000000
xor esi, ebx
or esi, dword [ebp - 0x48]
mov esi, dword [edx + 0x10]
mov dword [ebp - 0x28], esi
je 0x10032196
mov ebx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x44]
xor ebx, dword [ebp - 0x28]
xor esi, dword [ebp - 0x40]
or esi, ebx
jne 0x1003223e
mov esi, dword [ebp - 0x40]
mov ebx, 0x80000000
xor esi, ebx
or esi, dword [ebp - 0x28]
je 0x100321d7
mov esi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x40]
not esi
xor ebx, 0x7ffeffff
or ebx, esi
je 0x100321d7
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x28]
xor ebx, dword [esi + 0xc0]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x28], ebx
mov ebx, dword [ebp - 0x40]
xor ebx, dword [esi + 0xc4]
or ebx, dword [ebp - 0x28]
jne 0x1003223e
mov esi, dword [edx + 0x30]
or esi, dword [edx + 0x34]
jne 0x1003223e
mov esi, dword [ebp - 0x2c]
mov dword [edx + 0x14], ecx
mov dword [edx + 0x10], esi
mov esi, dword [ebp - 0x1c]
mov esi, dword [esi + 0x2b8]
mov esi, dword [esi + 0xc]
cmp dword [esi + 0x8c], 0
jne 0x10032206
mov esi, dword [ebp - 0x2c]
mov dword [edx + 0xc], ecx
mov dword [edx + 8], esi
mov esi, dword [ebp - 0x20]
mov dword [edx + 0x34], edi
add dword [ebp - 0x2c], esi
mov dword [edx + 0x30], esi
adc ecx, edi
jmp 0x10031c13
mov ebx, dword [ebp + 0xc]
jmp 0x10031c38
mov edi, dword [ebp - 0x1c]
cmp eax, 0x14
jge 0x10031976
jmp 0x10031992
cmp dword [edi + 0x1fc], 0
mov dword [ebp - 0x44], ebx
je 0x10032249
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp - 0x1c]
jmp 0x10031c4a
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 0x1fc], 1
mov ecx, dword [ebp - 0x20]
sar ecx, 0x1f
mov dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x28]
cmp dword [edx + 0x20], eax
jne 0x100322a7
mov esi, dword [edx + 0x14]
mov edi, 0x80000000
mov ebx, dword [edx + 0x10]
mov dword [ebp - 0x40], esi
mov esi, dword [edx + 0xc]
xor esi, edi
or esi, dword [edx + 8]
jne 0x100322cd
mov esi, dword [ebp - 0x40]
mov edi, 0x80000000
xor esi, edi
or esi, ebx
jne 0x100322cd
mov esi, dword [edx + 0x30]
or esi, dword [edx + 0x34]
jne 0x100322cd
mov esi, dword [ebp - 0x2c]
sub esi, dword [ebp - 0x20]
sbb ecx, dword [ebp - 0x48]
mov dword [ebp - 0x2c], esi
mov esi, dword [edx + 0x48]
test esi, esi
je 0x100322b6
test esi, esi
mov edx, esi
jne 0x10032268
jmp 0x1003223e
mov esi, dword [ebp - 0x34]
mov esi, dword [esi + 0x50c]
cmp dword [esi + 8], edx
jne 0x1003223e
mov esi, dword [esi + 0x20]
jmp 0x100322ae
mov edx, dword [ebp - 0x40]
xor ebx, dword [ebp - 0x44]
xor edx, dword [ebp - 0x28]
or edx, ebx
jne 0x1003223e
mov edx, dword [ebp - 0x34]
mov edi, dword [edx + 0x50c]
mov edx, dword [edi + 4]
test edx, edx
je 0x10032308
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
mov dword [esi + 0xc0], edi
mov edi, dword [ebp - 0x20]
mov dword [esi + 0xc4], ecx
jmp 0x10031c07
mov edx, dword [edi + 0x20]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
mov ebx, dword [ebp + 0xc]
mov dword [esi + 0xc0], edi
mov edi, dword [ebp - 0x20]
test edx, edx
mov dword [esi + 0xc4], ecx
jne 0x10031c07
jmp 0x10031c38